import { z } from 'zod';
/**
* MCPツールの入力スキーマ定義
*/
// ============================================================
// 認証ツール
// ============================================================
/** verge_login ツール入力 */
export const LoginToolInputSchema = z.object({
email: z.string().email().describe('ログインメールアドレス'),
password: z.string().min(1).describe('パスワード'),
});
export type LoginToolInput = z.infer<typeof LoginToolInputSchema>;
/** verge_update_user ツール入力 */
export const UpdateUserToolInputSchema = z.object({
user_id: z.number().int().positive().describe('ユーザーID'),
name: z.string().min(1).optional().describe('ユーザー名'),
email: z.string().email().optional().describe('メールアドレス'),
password: z.string().min(1).optional().describe('新しいパスワード'),
});
export type UpdateUserToolInput = z.infer<typeof UpdateUserToolInputSchema>;
// ============================================================
// ブログ管理ツール
// ============================================================
/** verge_list_blogs ツール入力 */
export const ListBlogsToolInputSchema = z.object({});
export type ListBlogsToolInput = z.infer<typeof ListBlogsToolInputSchema>;
/** verge_get_blog ツール入力 */
export const GetBlogToolInputSchema = z.object({
blog_id: z.number().int().positive().describe('ブログID'),
});
export type GetBlogToolInput = z.infer<typeof GetBlogToolInputSchema>;
/** verge_create_blog ツール入力 */
export const CreateBlogToolInputSchema = z.object({
name: z.string().min(1).describe('ブログ名'),
slug: z.string().min(1).describe('URL用スラッグ'),
description: z.string().optional().describe('ブログ説明'),
});
export type CreateBlogToolInput = z.infer<typeof CreateBlogToolInputSchema>;
/** verge_update_blog ツール入力 */
export const UpdateBlogToolInputSchema = z.object({
blog_id: z.number().int().positive().describe('ブログID'),
name: z.string().min(1).optional().describe('ブログ名'),
slug: z.string().min(1).optional().describe('URL用スラッグ'),
description: z.string().optional().describe('ブログ説明'),
});
export type UpdateBlogToolInput = z.infer<typeof UpdateBlogToolInputSchema>;
/** verge_delete_blog ツール入力 */
export const DeleteBlogToolInputSchema = z.object({
blog_id: z.number().int().positive().describe('ブログID'),
});
export type DeleteBlogToolInput = z.infer<typeof DeleteBlogToolInputSchema>;
// ============================================================
// 記事管理ツール
// ============================================================
/** verge_list_articles ツール入力 */
export const ListArticlesToolInputSchema = z.object({
blog_id: z.number().int().positive().describe('ブログID'),
search: z.string().optional().describe('検索キーワード (タイトル・本文)'),
status: z.enum(['draft', 'published']).optional().describe('記事ステータス'),
category_ids: z
.array(z.number().int().positive())
.optional()
.describe('フィルタするカテゴリID配列'),
tag_ids: z.array(z.number().int().positive()).optional().describe('フィルタするタグID配列'),
});
export type ListArticlesToolInput = z.infer<typeof ListArticlesToolInputSchema>;
/** verge_get_article ツール入力 */
export const GetArticleToolInputSchema = z.object({
article_id: z.number().int().positive().describe('記事ID'),
blog_id: z.number().int().positive().describe('ブログID'),
});
export type GetArticleToolInput = z.infer<typeof GetArticleToolInputSchema>;
/** verge_create_article ツール入力 */
export const CreateArticleToolInputSchema = z.object({
blog_id: z.number().int().positive().describe('ブログID'),
title: z.string().min(1).describe('記事タイトル'),
content: z.string().describe('記事本文 (Markdown形式)'),
slug: z.string().min(1).describe('URL用スラッグ'),
status: z.enum(['draft', 'published']).default('draft').describe('記事ステータス (デフォルト: draft)'),
featured_image: z.string().url().optional().describe('アイキャッチ画像URL'),
excerpt: z.string().optional().describe('記事の抜粋'),
author_id: z.number().int().positive().optional().describe('著者ID'),
category_ids: z.array(z.number().int().positive()).optional().describe('カテゴリID配列'),
tag_ids: z.array(z.number().int().positive()).optional().describe('タグID配列'),
});
export type CreateArticleToolInput = z.infer<typeof CreateArticleToolInputSchema>;
/** verge_update_article ツール入力 */
export const UpdateArticleToolInputSchema = z.object({
article_id: z.number().int().positive().describe('記事ID'),
blog_id: z.number().int().positive().describe('ブログID'),
title: z.string().min(1).optional().describe('記事タイトル'),
content: z.string().optional().describe('記事本文 (Markdown形式)'),
slug: z.string().min(1).optional().describe('URL用スラッグ'),
status: z.enum(['draft', 'published']).optional().describe('記事ステータス'),
featured_image: z.string().url().optional().describe('アイキャッチ画像URL'),
excerpt: z.string().optional().describe('記事の抜粋'),
author_id: z.number().int().positive().optional().describe('著者ID'),
category_ids: z.array(z.number().int().positive()).optional().describe('カテゴリID配列'),
tag_ids: z.array(z.number().int().positive()).optional().describe('タグID配列'),
});
export type UpdateArticleToolInput = z.infer<typeof UpdateArticleToolInputSchema>;
/** verge_publish_article ツール入力 */
export const PublishArticleToolInputSchema = z.object({
article_id: z.number().int().positive().describe('記事ID'),
blog_id: z.number().int().positive().describe('ブログID'),
});
export type PublishArticleToolInput = z.infer<typeof PublishArticleToolInputSchema>;
/** verge_delete_article ツール入力 */
export const DeleteArticleToolInputSchema = z.object({
article_id: z.number().int().positive().describe('記事ID'),
blog_id: z.number().int().positive().describe('ブログID'),
});
export type DeleteArticleToolInput = z.infer<typeof DeleteArticleToolInputSchema>;