{
  "service": "discourse",
  "displayName": "Discourse",
  "categories": [
    "Communication",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "DISCOURSE_API_KEY",
      "description": "Discourse API key sent with the Api-Key header. Create an API key from your forum admin panel.",
      "extraFields": [
        {
          "key": "baseUrl",
          "label": "Forum URL",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "https://meta.discourse.org",
          "description": "The HTTPS base URL of your Discourse forum."
        },
        {
          "key": "apiUsername",
          "label": "API Username",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "system",
          "description": "The Discourse API username sent with the Api-Username header."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.discourse.org/",
  "actions": [
    {
      "id": "discourse.create_post",
      "service": "discourse",
      "name": "create_post",
      "description": "Create a reply post in an existing Discourse topic.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "topicId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Discourse topic identifier to reply to."
          },
          "raw": {
            "type": "string",
            "minLength": 1,
            "description": "The raw Markdown body for the reply."
          },
          "replyToPostNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The post number to reply to inside the topic."
          },
          "createdAt": {
            "type": "string",
            "description": "The explicit creation timestamp for the post.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "topicId",
          "raw"
        ],
        "description": "Input parameters for creating a Discourse reply post."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "post": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The Discourse post identifier."
              },
              "topicId": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The topic identifier for the post when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "topicSlug": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The topic slug for the post when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "postNumber": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The one-based post number inside the topic when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "replyToPostNumber": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The post number this post replies to when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "username": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The author's username when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "displayUsername": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The author's display username when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The author's display name when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The timestamp when the post was created when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The timestamp when the post was updated when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "cooked": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The cooked HTML post body when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "postType": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The Discourse post type value when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Discourse post payload."
              }
            },
            "additionalProperties": false,
            "description": "A Discourse post summary."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Discourse created post payload."
          }
        },
        "additionalProperties": false,
        "description": "A Discourse created post response."
      },
      "followUpActions": [
        "discourse.get_topic"
      ]
    },
    {
      "id": "discourse.create_topic",
      "service": "discourse",
      "name": "create_topic",
      "description": "Create a new Discourse topic with a first post.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The title for the new Discourse topic."
          },
          "raw": {
            "type": "string",
            "minLength": 1,
            "description": "The raw Markdown body for the first post."
          },
          "categoryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Discourse category identifier for the new topic."
          },
          "embedUrl": {
            "type": "string",
            "description": "A remote URL to associate with the new topic.",
            "format": "uri"
          },
          "externalId": {
            "type": "string",
            "minLength": 1,
            "description": "A caller-provided external identifier for the new topic."
          },
          "autoTrack": {
            "type": "boolean",
            "description": "Whether the author should automatically track the new topic."
          },
          "createdAt": {
            "type": "string",
            "description": "The explicit creation timestamp for the post.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "title",
          "raw"
        ],
        "description": "Input parameters for creating a Discourse topic."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "post": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The Discourse post identifier."
              },
              "topicId": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The topic identifier for the post when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "topicSlug": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The topic slug for the post when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "postNumber": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The one-based post number inside the topic when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "replyToPostNumber": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The post number this post replies to when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "username": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The author's username when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "displayUsername": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The author's display username when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The author's display name when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The timestamp when the post was created when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The timestamp when the post was updated when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "cooked": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The cooked HTML post body when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "postType": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The Discourse post type value when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Discourse post payload."
              }
            },
            "additionalProperties": false,
            "description": "A Discourse post summary."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Discourse created post payload."
          }
        },
        "additionalProperties": false,
        "description": "A Discourse created post response."
      },
      "followUpActions": [
        "discourse.get_topic"
      ]
    },
    {
      "id": "discourse.get_topic",
      "service": "discourse",
      "name": "get_topic",
      "description": "Read one Discourse topic and its returned posts.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "topicId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Discourse topic identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading one Discourse topic."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The Discourse topic identifier."
              },
              "title": {
                "type": "string",
                "description": "The topic title."
              },
              "fancyTitle": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The HTML-formatted topic title when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "slug": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The topic slug when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "postsCount": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The number of posts in the topic when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "categoryId": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The category identifier for the topic when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The timestamp when the topic was created when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "posts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "description": "The Discourse post identifier."
                    },
                    "topicId": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "description": "The topic identifier for the post when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "topicSlug": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The topic slug for the post when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "postNumber": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "description": "The one-based post number inside the topic when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "replyToPostNumber": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "description": "The post number this post replies to when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "username": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The author's username when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "displayUsername": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The author's display username when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "name": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The author's display name when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "createdAt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The timestamp when the post was created when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "updatedAt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The timestamp when the post was updated when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "cooked": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The cooked HTML post body when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "postType": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "description": "The Discourse post type value when present."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "raw": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true,
                      "description": "The raw Discourse post payload."
                    }
                  },
                  "additionalProperties": false,
                  "description": "A Discourse post summary."
                },
                "description": "The posts returned for the topic."
              },
              "details": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Discourse topic details object."
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Discourse topic payload."
              }
            },
            "additionalProperties": false,
            "description": "The normalized Discourse topic detail."
          }
        },
        "additionalProperties": false,
        "description": "A Discourse topic detail response."
      },
      "followUpActions": [
        "discourse.create_post"
      ]
    },
    {
      "id": "discourse.list_categories",
      "service": "discourse",
      "name": "list_categories",
      "description": "List Discourse categories visible to the authenticated API user.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeSubcategories": {
            "type": "boolean",
            "description": "Whether Discourse should include subcategories."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Discourse categories."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The Discourse category identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The category name."
                },
                "slug": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The category slug when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "color": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The category color hex value when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "textColor": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The category text color hex value when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "description": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The plain-text category description when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "topicCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of topics in the category when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of posts in the category when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "position": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The category display position when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "parentCategoryId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The parent category identifier when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "readRestricted": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the category is read-restricted when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse category payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse category summary."
            },
            "description": "The categories returned by Discourse."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Discourse category list payload."
          }
        },
        "additionalProperties": false,
        "description": "A Discourse category list response."
      },
      "followUpActions": [
        "discourse.list_category_topics",
        "discourse.create_topic"
      ]
    },
    {
      "id": "discourse.list_category_topics",
      "service": "discourse",
      "name": "list_category_topics",
      "description": "List topics for one Discourse category.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "minLength": 1,
            "description": "The Discourse category slug."
          },
          "categoryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Discourse category identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing category topics."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "canCreateTopic": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether the authenticated user can create a topic."
              },
              {
                "type": "null"
              }
            ]
          },
          "perPage": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The Discourse per-page value used by the response."
              },
              {
                "type": "null"
              }
            ]
          },
          "moreTopicsUrl": {
            "anyOf": [
              {
                "type": "string",
                "description": "The relative URL for the next topic page when present."
              },
              {
                "type": "null"
              }
            ]
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The Discourse topic identifier."
                },
                "title": {
                  "type": "string",
                  "description": "The topic title."
                },
                "fancyTitle": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The HTML-formatted topic title when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "slug": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The topic slug when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postsCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of posts in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "replyCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of replies in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "highestPostNumber": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The highest post number in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the topic was created when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastPostedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp of the latest post when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "bumpedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the topic was last bumped when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "categoryId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The category identifier for the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "views": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The topic view count when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "likeCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The topic like count when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "pinned": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is pinned when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "closed": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is closed when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "archived": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is archived when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "visible": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is visible when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastPosterUsername": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The username of the latest poster when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse topic payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse topic summary."
            },
            "description": "The topics returned by Discourse."
          },
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The Discourse user identifier when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "username": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Discourse username when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The user's display name when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "avatarTemplate": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Discourse avatar template URL when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse user payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse user summary."
            },
            "description": "The users referenced by the topic list."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Discourse topic list payload."
          }
        },
        "additionalProperties": false,
        "description": "A Discourse topic list response."
      },
      "followUpActions": [
        "discourse.get_topic"
      ]
    },
    {
      "id": "discourse.list_latest_topics",
      "service": "discourse",
      "name": "list_latest_topics",
      "description": "List the latest topics visible to the authenticated Discourse API user.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "order": {
            "type": "string",
            "enum": [
              "default",
              "created",
              "activity",
              "views",
              "posts",
              "category",
              "likes",
              "op_likes",
              "posters"
            ],
            "description": "The Discourse latest-topics ordering field."
          },
          "ascending": {
            "type": "boolean",
            "description": "Whether Discourse should sort the latest topics ascending."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of topics to request from Discourse."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Discourse latest topics."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "canCreateTopic": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether the authenticated user can create a topic."
              },
              {
                "type": "null"
              }
            ]
          },
          "perPage": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The Discourse per-page value used by the response."
              },
              {
                "type": "null"
              }
            ]
          },
          "moreTopicsUrl": {
            "anyOf": [
              {
                "type": "string",
                "description": "The relative URL for the next topic page when present."
              },
              {
                "type": "null"
              }
            ]
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The Discourse topic identifier."
                },
                "title": {
                  "type": "string",
                  "description": "The topic title."
                },
                "fancyTitle": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The HTML-formatted topic title when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "slug": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The topic slug when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postsCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of posts in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "replyCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of replies in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "highestPostNumber": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The highest post number in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the topic was created when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastPostedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp of the latest post when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "bumpedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the topic was last bumped when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "categoryId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The category identifier for the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "views": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The topic view count when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "likeCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The topic like count when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "pinned": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is pinned when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "closed": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is closed when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "archived": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is archived when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "visible": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is visible when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastPosterUsername": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The username of the latest poster when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse topic payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse topic summary."
            },
            "description": "The topics returned by Discourse."
          },
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The Discourse user identifier when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "username": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Discourse username when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The user's display name when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "avatarTemplate": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Discourse avatar template URL when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse user payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse user summary."
            },
            "description": "The users referenced by the topic list."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Discourse topic list payload."
          }
        },
        "additionalProperties": false,
        "description": "A Discourse topic list response."
      },
      "followUpActions": [
        "discourse.get_topic",
        "discourse.create_post"
      ]
    },
    {
      "id": "discourse.search",
      "service": "discourse",
      "name": "search",
      "description": "Search Discourse content using the official search query syntax.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The Discourse search query string."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The one-based search results page."
          }
        },
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "description": "Input parameters for searching Discourse."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "posts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The Discourse post identifier."
                },
                "topicId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The topic identifier for the post when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "topicSlug": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The topic slug for the post when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postNumber": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The one-based post number inside the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "replyToPostNumber": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The post number this post replies to when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "username": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The author's username when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "displayUsername": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The author's display username when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The author's display name when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the post was created when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "updatedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the post was updated when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "cooked": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The cooked HTML post body when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postType": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The Discourse post type value when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse post payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse post summary."
            },
            "description": "The posts returned by Discourse search."
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The Discourse topic identifier."
                },
                "title": {
                  "type": "string",
                  "description": "The topic title."
                },
                "fancyTitle": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The HTML-formatted topic title when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "slug": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The topic slug when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postsCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of posts in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "replyCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of replies in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "highestPostNumber": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The highest post number in the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the topic was created when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastPostedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp of the latest post when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "bumpedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the topic was last bumped when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "categoryId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The category identifier for the topic when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "views": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The topic view count when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "likeCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The topic like count when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "pinned": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is pinned when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "closed": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is closed when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "archived": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is archived when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "visible": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the topic is visible when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastPosterUsername": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The username of the latest poster when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse topic payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse topic summary."
            },
            "description": "The topics returned by Discourse search."
          },
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The Discourse user identifier when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "username": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Discourse username when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The user's display name when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "avatarTemplate": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Discourse avatar template URL when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse user payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse user summary."
            },
            "description": "The users returned by Discourse search."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The Discourse category identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The category name."
                },
                "slug": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The category slug when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "color": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The category color hex value when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "textColor": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The category text color hex value when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "description": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The plain-text category description when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "topicCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of topics in the category when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postCount": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The number of posts in the category when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "position": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The category display position when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "parentCategoryId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The parent category identifier when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "readRestricted": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether the category is read-restricted when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Discourse category payload."
                }
              },
              "additionalProperties": false,
              "description": "A Discourse category summary."
            },
            "description": "The categories returned by Discourse search."
          },
          "groupedSearchResult": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The grouped_search_result object returned by Discourse."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Discourse search payload."
          }
        },
        "additionalProperties": false,
        "description": "A Discourse search response."
      },
      "followUpActions": [
        "discourse.get_topic"
      ]
    }
  ]
}
