Skip to content

Commit 885dfee

Browse files
Adding documentation for Todoist integration
1 parent a84f764 commit 885dfee

15 files changed

Lines changed: 591 additions & 0 deletions
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
# Todoist
2+
3+
import ToolInfo from "@/components/ToolInfo";
4+
import Badges from "@/components/Badges";
5+
import TabbedCodeBlock from "@/components/TabbedCodeBlock";
6+
import TableOfContents from "@/components/TableOfContents";
7+
import ToolFooter from "@/components/ToolFooter";
8+
9+
<ToolInfo
10+
description="Enable agents to interact with Todoist"
11+
author="Arcade"
12+
authType="OAuth2"
13+
versions={["0.1.1"]}
14+
/>
15+
16+
<Badges repo="arcadeai/arcade_todoist" />
17+
18+
The Todoist toolkit provides a comprehensive set of tools for managing tasks and projects within the Todoist application. Users can easily perform the following actions:
19+
20+
- Retrieve all tasks or filter tasks by specific projects or queries.
21+
- Create new tasks and assign them to projects.
22+
- Mark tasks as completed or delete them as needed.
23+
- Access and list all projects to organize tasks effectively.
24+
25+
This toolkit streamlines task management, making it simple to keep track of work and projects.
26+
27+
## Available Tools
28+
29+
<TableOfContents
30+
headers={["Tool Name", "Description"]}
31+
data={
32+
[
33+
["Todoist.GetAllTasks", "Get all tasks from the Todoist API with pagination support. Use this when the user wants"],
34+
["Todoist.GetTasksByProject", "Get tasks from a specific project by project ID or name with pagination support."],
35+
["Todoist.CreateTask", "Create a new task for the user. Use this whenever the user wants to create, add, or make a task."],
36+
["Todoist.CloseTask", "Close a task by its exact ID. Use this whenever the user wants to"],
37+
["Todoist.DeleteTask", "Delete a task by its exact ID. Use this whenever the user wants to"],
38+
["Todoist.GetTasksByFilter", "Get tasks by filter query with pagination support."],
39+
["Todoist.GetProjects", "Get all projects from the Todoist API. Use this when the user wants to see, list, or browse"],
40+
]
41+
}
42+
/>
43+
44+
<Tip>
45+
If you need to perform an action that's not listed here, you can [get in touch
46+
with us](mailto:contact@arcade.dev) to request a new tool, or [create your
47+
own tools](/home/build-tools/create-a-toolkit).
48+
</Tip>
49+
50+
## Todoist.GetAllTasks
51+
52+
<br />
53+
<TabbedCodeBlock
54+
tabs={[
55+
{
56+
label: "Call the Tool Directly",
57+
content: {
58+
Python: ["/examples/integrations/toolkits/todoist/get_all_tasks_example_call_tool.py"],
59+
JavaScript: ["/examples/integrations/toolkits/todoist/get_all_tasks_example_call_tool.js"],
60+
},
61+
},
62+
]}
63+
/>
64+
65+
Get all tasks from the Todoist API with pagination support. Use this when the user wants
66+
67+
**Parameters**
68+
69+
- **limit** (`integer`, optional) Number of tasks to return (min: 1, default: 50, max: 200). Default is 50 which should be sufficient for most use cases.
70+
- **next_page_token** (`string`, optional) Token for pagination. Use None for the first page, or the token returned from a previous call to get the next page of results.
71+
72+
73+
## Todoist.GetTasksByProject
74+
75+
<br />
76+
<TabbedCodeBlock
77+
tabs={[
78+
{
79+
label: "Call the Tool Directly",
80+
content: {
81+
Python: ["/examples/integrations/toolkits/todoist/get_tasks_by_project_example_call_tool.py"],
82+
JavaScript: ["/examples/integrations/toolkits/todoist/get_tasks_by_project_example_call_tool.js"],
83+
},
84+
},
85+
]}
86+
/>
87+
88+
Get tasks from a specific project by project ID or name with pagination support.
89+
90+
**Parameters**
91+
92+
- **project** (`string`, required) The ID or name of the project to get tasks from.
93+
- **limit** (`integer`, optional) Number of tasks to return (min: 1, default: 50, max: 200). Default is 50 which should be sufficient for most use cases.
94+
- **next_page_token** (`string`, optional) Token for pagination. Use None for the first page, or the token returned from a previous call to get the next page of results.
95+
96+
97+
## Todoist.CreateTask
98+
99+
<br />
100+
<TabbedCodeBlock
101+
tabs={[
102+
{
103+
label: "Call the Tool Directly",
104+
content: {
105+
Python: ["/examples/integrations/toolkits/todoist/create_task_example_call_tool.py"],
106+
JavaScript: ["/examples/integrations/toolkits/todoist/create_task_example_call_tool.js"],
107+
},
108+
},
109+
]}
110+
/>
111+
112+
Create a new task for the user. Use this whenever the user wants to create, add, or make a task.
113+
114+
**Parameters**
115+
116+
- **description** (`string`, required) The title of the task to be created.
117+
- **project** (`string`, optional) The ID or name of the project to add the task to. Use the project ID or name if user mentions a specific project. Leave as None to add to inbox.
118+
119+
120+
## Todoist.CloseTask
121+
122+
<br />
123+
<TabbedCodeBlock
124+
tabs={[
125+
{
126+
label: "Call the Tool Directly",
127+
content: {
128+
Python: ["/examples/integrations/toolkits/todoist/close_task_example_call_tool.py"],
129+
JavaScript: ["/examples/integrations/toolkits/todoist/close_task_example_call_tool.js"],
130+
},
131+
},
132+
]}
133+
/>
134+
135+
Close a task by its exact ID. Use this whenever the user wants to
136+
137+
**Parameters**
138+
139+
- **task_id** (`string`, required) The exact ID of the task to be closed.
140+
141+
142+
## Todoist.DeleteTask
143+
144+
<br />
145+
<TabbedCodeBlock
146+
tabs={[
147+
{
148+
label: "Call the Tool Directly",
149+
content: {
150+
Python: ["/examples/integrations/toolkits/todoist/delete_task_example_call_tool.py"],
151+
JavaScript: ["/examples/integrations/toolkits/todoist/delete_task_example_call_tool.js"],
152+
},
153+
},
154+
]}
155+
/>
156+
157+
Delete a task by its exact ID. Use this whenever the user wants to
158+
159+
**Parameters**
160+
161+
- **task_id** (`string`, required) The exact ID of the task to be deleted.
162+
163+
164+
## Todoist.GetTasksByFilter
165+
166+
<br />
167+
<TabbedCodeBlock
168+
tabs={[
169+
{
170+
label: "Call the Tool Directly",
171+
content: {
172+
Python: ["/examples/integrations/toolkits/todoist/get_tasks_by_filter_example_call_tool.py"],
173+
JavaScript: ["/examples/integrations/toolkits/todoist/get_tasks_by_filter_example_call_tool.js"],
174+
},
175+
},
176+
]}
177+
/>
178+
179+
Get tasks by filter query with pagination support.
180+
181+
**Parameters**
182+
183+
- **filter_query** (`string`, required) The filter query to search tasks.
184+
- **limit** (`integer`, optional) Number of tasks to return (min: 1, default: 50, max: 200). Default is 50 which should be sufficient for most use cases.
185+
- **next_page_token** (`string`, optional) Token for pagination. Use None for the first page, or the token returned from a previous call to get the next page of results.
186+
187+
188+
## Todoist.GetProjects
189+
190+
<br />
191+
<TabbedCodeBlock
192+
tabs={[
193+
{
194+
label: "Call the Tool Directly",
195+
content: {
196+
Python: ["/examples/integrations/toolkits/todoist/get_projects_example_call_tool.py"],
197+
JavaScript: ["/examples/integrations/toolkits/todoist/get_projects_example_call_tool.js"],
198+
},
199+
},
200+
]}
201+
/>
202+
203+
Get all projects from the Todoist API. Use this when the user wants to see, list, or browse
204+
205+
**Parameters**
206+
207+
This tool does not take any parameters.
208+
209+
210+
211+
<ToolFooter pipPackageName="arcade_todoist" />
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Arcade } from "@arcadeai/arcadejs";
2+
3+
const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
4+
5+
const USER_ID = "{arcade_user_id}";
6+
const TOOL_NAME = "Todoist.CloseTask";
7+
8+
// Start the authorization process
9+
const authResponse = await client.tools.authorize({tool_name: TOOL_NAME});
10+
11+
if (authResponse.status !== "completed") {
12+
console.log(`Click this link to authorize: ${authResponse.url}`);
13+
}
14+
15+
// Wait for the authorization to complete
16+
await client.auth.waitForCompletion(authResponse);
17+
18+
const toolInput = {
19+
"task_id": "12345"
20+
};
21+
22+
const response = await client.tools.execute({
23+
tool_name: TOOL_NAME,
24+
input: toolInput,
25+
user_id: USER_ID,
26+
});
27+
28+
console.log(JSON.stringify(response.output.value, null, 2));
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import json
2+
from arcadepy import Arcade
3+
4+
client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
5+
6+
USER_ID = "{arcade_user_id}"
7+
TOOL_NAME = "Todoist.CloseTask"
8+
9+
auth_response = client.tools.authorize(tool_name=TOOL_NAME)
10+
11+
if auth_response.status != "completed":
12+
print(f"Click this link to authorize: {auth_response.url}")
13+
14+
# Wait for the authorization to complete
15+
client.auth.wait_for_completion(auth_response)
16+
17+
tool_input = {
18+
'task_id': '12345'
19+
}
20+
21+
response = client.tools.execute(
22+
tool_name=TOOL_NAME,
23+
input=tool_input,
24+
user_id=USER_ID,
25+
)
26+
print(json.dumps(response.output.value, indent=2))
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { Arcade } from "@arcadeai/arcadejs";
2+
3+
const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
4+
5+
const USER_ID = "{arcade_user_id}";
6+
const TOOL_NAME = "Todoist.CreateTask";
7+
8+
// Start the authorization process
9+
const authResponse = await client.tools.authorize({tool_name: TOOL_NAME});
10+
11+
if (authResponse.status !== "completed") {
12+
console.log(`Click this link to authorize: ${authResponse.url}`);
13+
}
14+
15+
// Wait for the authorization to complete
16+
await client.auth.waitForCompletion(authResponse);
17+
18+
const toolInput = {
19+
"description": "Implement user authentication",
20+
"project": "ProjectX"
21+
};
22+
23+
const response = await client.tools.execute({
24+
tool_name: TOOL_NAME,
25+
input: toolInput,
26+
user_id: USER_ID,
27+
});
28+
29+
console.log(JSON.stringify(response.output.value, null, 2));
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import json
2+
from arcadepy import Arcade
3+
4+
client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
5+
6+
USER_ID = "{arcade_user_id}"
7+
TOOL_NAME = "Todoist.CreateTask"
8+
9+
auth_response = client.tools.authorize(tool_name=TOOL_NAME)
10+
11+
if auth_response.status != "completed":
12+
print(f"Click this link to authorize: {auth_response.url}")
13+
14+
# Wait for the authorization to complete
15+
client.auth.wait_for_completion(auth_response)
16+
17+
tool_input = {
18+
'description': 'Implement user authentication', 'project': 'ProjectX'
19+
}
20+
21+
response = client.tools.execute(
22+
tool_name=TOOL_NAME,
23+
input=tool_input,
24+
user_id=USER_ID,
25+
)
26+
print(json.dumps(response.output.value, indent=2))
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Arcade } from "@arcadeai/arcadejs";
2+
3+
const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
4+
5+
const USER_ID = "{arcade_user_id}";
6+
const TOOL_NAME = "Todoist.DeleteTask";
7+
8+
// Start the authorization process
9+
const authResponse = await client.tools.authorize({tool_name: TOOL_NAME});
10+
11+
if (authResponse.status !== "completed") {
12+
console.log(`Click this link to authorize: ${authResponse.url}`);
13+
}
14+
15+
// Wait for the authorization to complete
16+
await client.auth.waitForCompletion(authResponse);
17+
18+
const toolInput = {
19+
"task_id": "12345"
20+
};
21+
22+
const response = await client.tools.execute({
23+
tool_name: TOOL_NAME,
24+
input: toolInput,
25+
user_id: USER_ID,
26+
});
27+
28+
console.log(JSON.stringify(response.output.value, null, 2));
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import json
2+
from arcadepy import Arcade
3+
4+
client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
5+
6+
USER_ID = "{arcade_user_id}"
7+
TOOL_NAME = "Todoist.DeleteTask"
8+
9+
auth_response = client.tools.authorize(tool_name=TOOL_NAME)
10+
11+
if auth_response.status != "completed":
12+
print(f"Click this link to authorize: {auth_response.url}")
13+
14+
# Wait for the authorization to complete
15+
client.auth.wait_for_completion(auth_response)
16+
17+
tool_input = {
18+
'task_id': '12345'
19+
}
20+
21+
response = client.tools.execute(
22+
tool_name=TOOL_NAME,
23+
input=tool_input,
24+
user_id=USER_ID,
25+
)
26+
print(json.dumps(response.output.value, indent=2))

0 commit comments

Comments
 (0)