research_agent/mcp/
params.rs1use schemars::JsonSchema;
12use serde::Deserialize;
13
14#[derive(Debug, Deserialize, JsonSchema)]
15pub struct IngestParams {
16 #[serde(default)]
19 pub query: Option<String>,
20 #[serde(default = "default_source")]
23 pub source: String,
24 #[serde(default = "default_limit")]
26 pub limit: usize,
27 #[serde(default)]
29 pub path: Option<String>,
30 #[serde(default)]
32 pub topic: Option<String>,
33}
34
35#[derive(Debug, Deserialize, JsonSchema)]
36pub struct ImportPapersParams {
37 pub path: String,
39}
40
41#[derive(Debug, Deserialize, JsonSchema)]
42pub struct PaperBodyParams {
43 pub id: String,
45 pub query: Option<String>,
48}
49
50#[derive(Debug, Deserialize, JsonSchema)]
51pub struct PaperReferencesParams {
52 pub id: String,
54 pub direction: Option<String>,
57 pub intents: Option<bool>,
61}
62
63#[derive(Debug, Deserialize, JsonSchema)]
64pub struct QueryPapersParams {
65 pub query: String,
66 #[serde(default = "default_query_limit")]
68 pub limit: usize,
69}
70
71#[derive(Debug, Deserialize, JsonSchema)]
72pub struct MissingKeywordsParams {
73 #[serde(default = "default_query_limit")]
75 pub limit: usize,
76}
77
78#[derive(Debug, Deserialize, JsonSchema)]
79pub struct EnrichPaperParams {
80 pub id: String,
81 pub keywords: String,
83}
84
85#[derive(Debug, Deserialize, JsonSchema)]
86pub struct TopicBriefParams {
87 pub topic: String,
89}
90
91#[derive(Debug, Deserialize, JsonSchema)]
92pub struct GapInput {
93 pub description: String,
95 #[serde(default)]
97 pub gap_type: Option<String>,
98 #[serde(default)]
100 pub priority: Option<f32>,
101}
102
103#[derive(Debug, Deserialize, JsonSchema)]
104pub struct GapsRecordParams {
105 pub topic: String,
107 pub gaps: Vec<GapInput>,
109}
110
111#[derive(Debug, Deserialize, JsonSchema)]
112pub struct ListGapsParams {
113 #[serde(default)]
115 pub topic: Option<String>,
116}
117
118#[derive(Debug, Deserialize, JsonSchema)]
119pub struct ReportTopicParams {
120 pub topics: String,
122}
123
124#[derive(Debug, Deserialize, JsonSchema)]
125pub struct ReportSaveParams {
126 pub title: String,
128 pub topics: String,
130 pub markdown: String,
132}
133
134#[derive(Debug, Deserialize, JsonSchema)]
135pub struct TopicAddParams {
136 pub name: String,
137 #[serde(default)]
138 pub description: String,
139 #[serde(default)]
141 pub parent: Option<String>,
142}
143
144#[derive(Debug, Deserialize, JsonSchema)]
145pub struct UpdateReadParams {
146 pub id: String,
148 #[serde(default)]
150 pub status: Option<String>,
151 #[serde(default)]
153 pub rating: Option<u8>,
154}
155
156fn default_source() -> String {
157 "all".to_string()
158}
159fn default_limit() -> usize {
160 10
161}
162fn default_query_limit() -> usize {
163 20
164}