publish_article
Publish knowledge articles on ServiceNow by setting workflow states and versions. Streamline content management with direct API integration for efficient article publication.
Instructions
Publish a knowledge article
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes | ID of the article to publish | |
| workflow_state | No | The workflow state to set | published |
| workflow_version | No | The workflow version to use |
Implementation Reference
- The core handler function that executes the publish_article tool by sending a PATCH request to the ServiceNow kb_knowledge table to update the workflow_state.def publish_article( config: ServerConfig, auth_manager: AuthManager, params: PublishArticleParams, ) -> ArticleResponse: """ Publish a knowledge article. Args: config: Server configuration. auth_manager: Authentication manager. params: Parameters for publishing the article. Returns: Response with the published article details. """ api_url = f"{config.api_url}/table/kb_knowledge/{params.article_id}" # Build request data data = { "workflow_state": params.workflow_state, } if params.workflow_version: data["workflow_version"] = params.workflow_version # Make request try: response = requests.patch( api_url, json=data, headers=auth_manager.get_headers(), timeout=config.timeout, ) response.raise_for_status() result = response.json().get("result", {}) return ArticleResponse( success=True, message="Article published successfully", article_id=params.article_id, article_title=result.get("short_description"), workflow_state=result.get("workflow_state"), ) except requests.RequestException as e: logger.error(f"Failed to publish article: {e}") return ArticleResponse( success=False, message=f"Failed to publish article: {str(e)}", )
- Pydantic BaseModel defining the input parameters for the publish_article tool.class PublishArticleParams(BaseModel): """Parameters for publishing a knowledge article.""" article_id: str = Field(..., description="ID of the article to publish") workflow_state: Optional[str] = Field("published", description="The workflow state to set") workflow_version: Optional[str] = Field(None, description="The workflow version to use")
- src/servicenow_mcp/utils/tool_utils.py:697-702 (registration)Registration of the publish_article tool in the central tool_definitions dictionary, mapping name to (function, params model, return type, description, serialization)."publish_article": ( publish_article_tool, PublishArticleParams, str, # Expects JSON string "Publish a knowledge article", "json_dict", # Tool returns Pydantic model