@commandable/integration-data 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/credentials-index.d.ts.map +1 -1
- package/dist/credentials-index.js +119 -0
- package/dist/credentials-index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +33 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +36 -4
- package/dist/loader.js.map +1 -1
- package/integrations/__tests__/liveHarness.ts +16 -3
- package/integrations/airtable/.env.test +9 -0
- package/integrations/airtable/.env.test.example +11 -0
- package/integrations/airtable/README.md +27 -0
- package/integrations/airtable/__tests__/get_handlers.test.ts +43 -5
- package/integrations/confluence/.env.test +25 -0
- package/integrations/confluence/.env.test.example +36 -0
- package/integrations/confluence/README.md +28 -0
- package/integrations/confluence/__tests__/get_handlers.test.ts +121 -0
- package/integrations/confluence/__tests__/usage_parity.test.ts +14 -0
- package/integrations/confluence/__tests__/write_handlers.test.ts +131 -0
- package/integrations/confluence/credentials.json +39 -0
- package/integrations/confluence/credentials_hint.md +4 -0
- package/integrations/confluence/credentials_hint_api_token.md +9 -0
- package/integrations/confluence/credentials_hint_oauth_token.md +8 -0
- package/integrations/confluence/handlers/add_comment.js +19 -0
- package/integrations/confluence/handlers/add_label.js +16 -0
- package/integrations/confluence/handlers/create_page.js +22 -0
- package/integrations/confluence/handlers/delete_page.js +17 -0
- package/integrations/confluence/handlers/get_comments.js +33 -0
- package/integrations/confluence/handlers/get_page_children.js +30 -0
- package/integrations/confluence/handlers/get_space.js +22 -0
- package/integrations/confluence/handlers/list_spaces.js +39 -0
- package/integrations/confluence/handlers/read_page.js +49 -0
- package/integrations/confluence/handlers/search_pages.js +42 -0
- package/integrations/confluence/handlers/update_page.js +42 -0
- package/integrations/confluence/manifest.json +85 -0
- package/integrations/confluence/prompt.md +55 -0
- package/integrations/confluence/schemas/add_comment.json +22 -0
- package/integrations/confluence/schemas/add_label.json +19 -0
- package/integrations/confluence/schemas/create_page.json +33 -0
- package/integrations/confluence/schemas/delete_page.json +23 -0
- package/integrations/confluence/schemas/empty.json +6 -0
- package/integrations/confluence/schemas/get_comments.json +24 -0
- package/integrations/confluence/schemas/get_page_children.json +28 -0
- package/integrations/confluence/schemas/get_space.json +18 -0
- package/integrations/confluence/schemas/list_spaces.json +36 -0
- package/integrations/confluence/schemas/read_page.json +28 -0
- package/integrations/confluence/schemas/search_pages.json +26 -0
- package/integrations/confluence/schemas/update_page.json +31 -0
- package/integrations/github/.env.test +16 -0
- package/integrations/github/.env.test.example +17 -0
- package/integrations/github/README.md +75 -0
- package/integrations/github/__tests__/get_handlers.test.ts +5 -5
- package/integrations/github/__tests__/write_handlers.test.ts +176 -58
- package/integrations/github/handlers/create_file.js +46 -0
- package/integrations/github/handlers/delete_file.js +14 -1
- package/integrations/github/handlers/edit_file.js +52 -0
- package/integrations/github/handlers/edit_files.js +107 -0
- package/integrations/github/manifest.json +74 -47
- package/integrations/github/prompt.md +36 -0
- package/integrations/github/schemas/create_file.json +13 -0
- package/integrations/github/schemas/delete_file.json +2 -2
- package/integrations/github/schemas/edit_file.json +26 -0
- package/integrations/github/schemas/edit_files.json +39 -0
- package/integrations/google-calendar/.env.test.example +11 -0
- package/integrations/google-calendar/README.md +41 -0
- package/integrations/google-calendar/__tests__/write_and_admin_handlers.test.ts +7 -7
- package/integrations/google-calendar/manifest.json +27 -17
- package/integrations/google-docs/README.md +30 -0
- package/integrations/google-drive/README.md +26 -0
- package/integrations/google-gmail/.env.test.example +11 -0
- package/integrations/google-gmail/README.md +49 -0
- package/integrations/google-gmail/handlers/create_draft_email.js +1 -1
- package/integrations/google-gmail/handlers/read_email.js +1 -1
- package/integrations/google-gmail/handlers/send_email.js +1 -1
- package/integrations/google-gmail/manifest.json +36 -25
- package/integrations/google-sheet/README.md +27 -0
- package/integrations/google-slides/README.md +28 -0
- package/integrations/hubspot/.env.test.example +20 -0
- package/integrations/hubspot/README.md +48 -0
- package/integrations/hubspot/__tests__/get_handlers.test.ts +151 -0
- package/integrations/hubspot/__tests__/usage_parity.test.ts +10 -0
- package/integrations/hubspot/__tests__/write_handlers.test.ts +244 -0
- package/integrations/hubspot/credentials.json +48 -0
- package/integrations/hubspot/credentials_hint.md +20 -0
- package/integrations/hubspot/credentials_hint_oauth_token.md +16 -0
- package/integrations/hubspot/handlers/archive_company.js +13 -0
- package/integrations/hubspot/handlers/archive_contact.js +13 -0
- package/integrations/hubspot/handlers/archive_deal.js +13 -0
- package/integrations/hubspot/handlers/archive_ticket.js +13 -0
- package/integrations/hubspot/handlers/create_association.js +18 -0
- package/integrations/hubspot/handlers/create_company.js +13 -0
- package/integrations/hubspot/handlers/create_contact.js +14 -0
- package/integrations/hubspot/handlers/create_deal.js +16 -0
- package/integrations/hubspot/handlers/create_note.js +44 -0
- package/integrations/hubspot/handlers/create_task.js +48 -0
- package/integrations/hubspot/handlers/create_ticket.js +15 -0
- package/integrations/hubspot/handlers/get_associations.js +14 -0
- package/integrations/hubspot/handlers/get_company.js +18 -0
- package/integrations/hubspot/handlers/get_contact.js +18 -0
- package/integrations/hubspot/handlers/get_deal.js +18 -0
- package/integrations/hubspot/handlers/get_ticket.js +20 -0
- package/integrations/hubspot/handlers/list_owners.js +12 -0
- package/integrations/hubspot/handlers/list_pipelines.js +5 -0
- package/integrations/hubspot/handlers/list_properties.js +11 -0
- package/integrations/hubspot/handlers/remove_association.js +22 -0
- package/integrations/hubspot/handlers/search_companies.js +43 -0
- package/integrations/hubspot/handlers/search_contacts.js +43 -0
- package/integrations/hubspot/handlers/search_deals.js +43 -0
- package/integrations/hubspot/handlers/search_notes.js +43 -0
- package/integrations/hubspot/handlers/search_tasks.js +43 -0
- package/integrations/hubspot/handlers/search_tickets.js +43 -0
- package/integrations/hubspot/handlers/update_company.js +13 -0
- package/integrations/hubspot/handlers/update_contact.js +14 -0
- package/integrations/hubspot/handlers/update_deal.js +16 -0
- package/integrations/hubspot/handlers/update_task.js +17 -0
- package/integrations/hubspot/handlers/update_ticket.js +15 -0
- package/integrations/hubspot/manifest.json +230 -0
- package/integrations/hubspot/prompt.md +69 -0
- package/integrations/hubspot/schemas/archive_company.json +13 -0
- package/integrations/hubspot/schemas/archive_contact.json +13 -0
- package/integrations/hubspot/schemas/archive_deal.json +9 -0
- package/integrations/hubspot/schemas/archive_ticket.json +9 -0
- package/integrations/hubspot/schemas/create_association.json +24 -0
- package/integrations/hubspot/schemas/create_company.json +14 -0
- package/integrations/hubspot/schemas/create_contact.json +15 -0
- package/integrations/hubspot/schemas/create_deal.json +20 -0
- package/integrations/hubspot/schemas/create_note.json +37 -0
- package/integrations/hubspot/schemas/create_task.json +51 -0
- package/integrations/hubspot/schemas/create_ticket.json +16 -0
- package/integrations/hubspot/schemas/empty.json +6 -0
- package/integrations/hubspot/schemas/get_associations.json +30 -0
- package/integrations/hubspot/schemas/get_company.json +27 -0
- package/integrations/hubspot/schemas/get_contact.json +27 -0
- package/integrations/hubspot/schemas/get_deal.json +20 -0
- package/integrations/hubspot/schemas/get_ticket.json +20 -0
- package/integrations/hubspot/schemas/list_owners.json +25 -0
- package/integrations/hubspot/schemas/list_pipelines.json +13 -0
- package/integrations/hubspot/schemas/list_properties.json +17 -0
- package/integrations/hubspot/schemas/remove_association.json +24 -0
- package/integrations/hubspot/schemas/search_companies.json +56 -0
- package/integrations/hubspot/schemas/search_contacts.json +56 -0
- package/integrations/hubspot/schemas/search_deals.json +43 -0
- package/integrations/hubspot/schemas/search_notes.json +43 -0
- package/integrations/hubspot/schemas/search_tasks.json +43 -0
- package/integrations/hubspot/schemas/search_tickets.json +43 -0
- package/integrations/hubspot/schemas/update_company.json +20 -0
- package/integrations/hubspot/schemas/update_contact.json +21 -0
- package/integrations/hubspot/schemas/update_deal.json +19 -0
- package/integrations/hubspot/schemas/update_task.json +31 -0
- package/integrations/hubspot/schemas/update_ticket.json +18 -0
- package/integrations/jira/.env.test +46 -0
- package/integrations/jira/.env.test.example +41 -0
- package/integrations/jira/README.md +46 -0
- package/integrations/jira/__tests__/get_handlers.test.ts +193 -0
- package/integrations/jira/__tests__/usage_parity.test.ts +14 -0
- package/integrations/jira/__tests__/write_handlers.test.ts +157 -0
- package/integrations/jira/credentials.json +39 -0
- package/integrations/jira/credentials_hint.md +4 -0
- package/integrations/jira/credentials_hint_api_token.md +6 -0
- package/integrations/jira/credentials_hint_oauth_token.md +6 -0
- package/integrations/jira/handlers/add_comment.js +9 -0
- package/integrations/jira/handlers/assign_issue.js +11 -0
- package/integrations/jira/handlers/create_issue.js +37 -0
- package/integrations/jira/handlers/create_sprint.js +19 -0
- package/integrations/jira/handlers/delete_issue.js +10 -0
- package/integrations/jira/handlers/get_backlog_issues.js +13 -0
- package/integrations/jira/handlers/get_board.js +6 -0
- package/integrations/jira/handlers/get_issue.js +63 -0
- package/integrations/jira/handlers/get_issue_comments.js +31 -0
- package/integrations/jira/handlers/get_myself.js +14 -0
- package/integrations/jira/handlers/get_project.js +28 -0
- package/integrations/jira/handlers/get_sprint.js +5 -0
- package/integrations/jira/handlers/get_sprint_issues.js +13 -0
- package/integrations/jira/handlers/get_transitions.js +23 -0
- package/integrations/jira/handlers/list_boards.js +34 -0
- package/integrations/jira/handlers/list_projects.js +29 -0
- package/integrations/jira/handlers/list_sprints.js +29 -0
- package/integrations/jira/handlers/move_issues_to_sprint.js +11 -0
- package/integrations/jira/handlers/search_issues.js +43 -0
- package/integrations/jira/handlers/search_users.js +21 -0
- package/integrations/jira/handlers/transition_issue.js +44 -0
- package/integrations/jira/handlers/update_issue.js +40 -0
- package/integrations/jira/handlers/update_sprint.js +20 -0
- package/integrations/jira/manifest.json +204 -0
- package/integrations/jira/prompt.md +80 -0
- package/integrations/jira/schemas/add_comment.json +16 -0
- package/integrations/jira/schemas/assign_issue.json +16 -0
- package/integrations/jira/schemas/create_issue.json +49 -0
- package/integrations/jira/schemas/create_sprint.json +29 -0
- package/integrations/jira/schemas/delete_issue.json +12 -0
- package/integrations/jira/schemas/empty.json +6 -0
- package/integrations/jira/schemas/get_backlog_issues.json +33 -0
- package/integrations/jira/schemas/get_board.json +13 -0
- package/integrations/jira/schemas/get_issue.json +23 -0
- package/integrations/jira/schemas/get_issue_comments.json +23 -0
- package/integrations/jira/schemas/get_project.json +17 -0
- package/integrations/jira/schemas/get_sprint.json +13 -0
- package/integrations/jira/schemas/get_sprint_issues.json +33 -0
- package/integrations/jira/schemas/get_transitions.json +12 -0
- package/integrations/jira/schemas/list_boards.json +27 -0
- package/integrations/jira/schemas/list_projects.json +22 -0
- package/integrations/jira/schemas/list_sprints.json +29 -0
- package/integrations/jira/schemas/move_issues_to_sprint.json +19 -0
- package/integrations/jira/schemas/search_issues.json +28 -0
- package/integrations/jira/schemas/search_users.json +18 -0
- package/integrations/jira/schemas/transition_issue.json +38 -0
- package/integrations/jira/schemas/update_issue.json +47 -0
- package/integrations/jira/schemas/update_sprint.json +33 -0
- package/integrations/new_integration_prompt.md +173 -2
- package/integrations/notion/.env.test +10 -0
- package/integrations/notion/.env.test.example +13 -0
- package/integrations/notion/README.md +42 -0
- package/integrations/notion/manifest.json +64 -35
- package/integrations/trello/.env.test +6 -0
- package/integrations/trello/.env.test.example +9 -0
- package/integrations/trello/README.md +50 -0
- package/package.json +7 -3
|
@@ -1,64 +1,91 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "github",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"toolsets": {
|
|
5
|
+
"code": {
|
|
6
|
+
"label": "Code & Files",
|
|
7
|
+
"description": "Read, search, and manage repository code and branches"
|
|
8
|
+
},
|
|
9
|
+
"issues": {
|
|
10
|
+
"label": "Issues",
|
|
11
|
+
"description": "Create, search, and manage GitHub issues"
|
|
12
|
+
},
|
|
13
|
+
"pull_requests": {
|
|
14
|
+
"label": "Pull Requests",
|
|
15
|
+
"description": "Create, review, and merge pull requests"
|
|
16
|
+
},
|
|
17
|
+
"ci": {
|
|
18
|
+
"label": "CI / Actions",
|
|
19
|
+
"description": "Monitor GitHub Actions workflows and debug failures"
|
|
20
|
+
},
|
|
21
|
+
"releases": {
|
|
22
|
+
"label": "Releases & Tags",
|
|
23
|
+
"description": "Manage releases and view tags"
|
|
24
|
+
},
|
|
25
|
+
"repo_admin": {
|
|
26
|
+
"label": "Repository Management",
|
|
27
|
+
"description": "Create, delete, fork, and discover repositories"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
4
30
|
"tools": [
|
|
5
|
-
{ "name": "get_me", "description": "Get the authenticated user's profile. Use this to find out who you are authenticated as before performing operations.", "inputSchema": "schemas/empty.json", "handler": "handlers/get_me.js", "scope": "read" },
|
|
6
|
-
{ "name": "list_repos", "description": "List repositories for the authenticated user.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_repos_user.js", "scope": "read" },
|
|
7
|
-
{ "name": "get_repo", "description": "Get details for a repository (description, default branch, visibility, topics, stats).", "inputSchema": "schemas/get_repo.json", "handler": "handlers/get_repo.js", "scope": "read" },
|
|
8
|
-
{ "name": "search_repos", "description": "Search GitHub repositories. Supports stars, forks, language, topic, and user filters (e.g. 'topic:react stars:>1000 language:javascript'). Use this to discover repos.", "inputSchema": "schemas/search_repos.json", "handler": "handlers/search_repos.js", "scope": "read" },
|
|
31
|
+
{ "name": "get_me", "description": "Get the authenticated user's profile. Use this to find out who you are authenticated as before performing operations.", "inputSchema": "schemas/empty.json", "handler": "handlers/get_me.js", "scope": "read", "toolset": "repo_admin" },
|
|
32
|
+
{ "name": "list_repos", "description": "List repositories for the authenticated user.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_repos_user.js", "scope": "read", "toolset": "repo_admin" },
|
|
33
|
+
{ "name": "get_repo", "description": "Get details for a repository (description, default branch, visibility, topics, stats).", "inputSchema": "schemas/get_repo.json", "handler": "handlers/get_repo.js", "scope": "read", "toolset": "code" },
|
|
34
|
+
{ "name": "search_repos", "description": "Search GitHub repositories. Supports stars, forks, language, topic, and user filters (e.g. 'topic:react stars:>1000 language:javascript'). Use this to discover repos.", "inputSchema": "schemas/search_repos.json", "handler": "handlers/search_repos.js", "scope": "read", "toolset": "repo_admin" },
|
|
9
35
|
|
|
10
|
-
{ "name": "get_file_contents", "description": "Get the content of a file from a repository. Returns decoded UTF-8 text. Use ref to read from a specific branch, tag, or commit. Call get_repo_tree first to discover file paths.", "inputSchema": "schemas/get_file_contents.json", "handler": "handlers/get_file_contents.js", "scope": "read" },
|
|
11
|
-
{ "name": "get_repo_tree", "description": "Get the full file/directory tree of a repository. Returns all paths and types. Use path_filter to scope to a subdirectory (e.g. 'src/'). Use this before get_file_contents to discover what files exist.", "inputSchema": "schemas/get_repo_tree.json", "handler": "handlers/get_repo_tree.js", "scope": "read" },
|
|
12
|
-
{ "name": "search_code", "description": "Search for code across GitHub repositories using GitHub's code search syntax. Examples: 'useState language:typescript repo:facebook/react', 'console.error path:src/'. Returns file paths and matched fragments.", "inputSchema": "schemas/search_code.json", "handler": "handlers/search_code.js", "scope": "read" },
|
|
36
|
+
{ "name": "get_file_contents", "description": "Get the content of a file from a repository. Returns decoded UTF-8 text. Use ref to read from a specific branch, tag, or commit. Call get_repo_tree first to discover file paths.", "inputSchema": "schemas/get_file_contents.json", "handler": "handlers/get_file_contents.js", "scope": "read", "toolset": "code" },
|
|
37
|
+
{ "name": "get_repo_tree", "description": "Get the full file/directory tree of a repository. Returns all paths and types. Use path_filter to scope to a subdirectory (e.g. 'src/'). Use this before get_file_contents to discover what files exist.", "inputSchema": "schemas/get_repo_tree.json", "handler": "handlers/get_repo_tree.js", "scope": "read", "toolset": "code" },
|
|
38
|
+
{ "name": "search_code", "description": "Search for code across GitHub repositories using GitHub's code search syntax. Examples: 'useState language:typescript repo:facebook/react', 'console.error path:src/'. Returns file paths and matched fragments.", "inputSchema": "schemas/search_code.json", "handler": "handlers/search_code.js", "scope": "read", "toolset": "code" },
|
|
13
39
|
|
|
14
|
-
{ "name": "list_branches", "description": "List branches in a repository. Supports pagination and filtering by protection status.", "inputSchema": "schemas/list_branches.json", "handler": "handlers/list_branches.js", "scope": "read" },
|
|
15
|
-
{ "name": "list_commits", "description": "List commits for a repository. Filter by branch/tag (sha), file path, or author. Paginate with page/per_page.", "inputSchema": "schemas/list_commits.json", "handler": "handlers/list_commits.js", "scope": "read" },
|
|
16
|
-
{ "name": "get_commit", "description": "Get the full details of a specific commit including its message, author, file changes, and diff stats.", "inputSchema": "schemas/get_commit.json", "handler": "handlers/get_commit.js", "scope": "read" },
|
|
17
|
-
{ "name": "list_tags", "description": "List tags for a repository. Use this to see available versions before creating a release.", "inputSchema": "schemas/list_tags.json", "handler": "handlers/list_tags.js", "scope": "read" },
|
|
40
|
+
{ "name": "list_branches", "description": "List branches in a repository. Supports pagination and filtering by protection status.", "inputSchema": "schemas/list_branches.json", "handler": "handlers/list_branches.js", "scope": "read", "toolset": "code" },
|
|
41
|
+
{ "name": "list_commits", "description": "List commits for a repository. Filter by branch/tag (sha), file path, or author. Paginate with page/per_page.", "inputSchema": "schemas/list_commits.json", "handler": "handlers/list_commits.js", "scope": "read", "toolset": "code" },
|
|
42
|
+
{ "name": "get_commit", "description": "Get the full details of a specific commit including its message, author, file changes, and diff stats.", "inputSchema": "schemas/get_commit.json", "handler": "handlers/get_commit.js", "scope": "read", "toolset": "code" },
|
|
43
|
+
{ "name": "list_tags", "description": "List tags for a repository. Use this to see available versions before creating a release.", "inputSchema": "schemas/list_tags.json", "handler": "handlers/list_tags.js", "scope": "read", "toolset": "code" },
|
|
18
44
|
|
|
19
|
-
{ "name": "list_issues", "description": "List issues for a repository. Filter by state (open/closed/all), labels (comma-separated), and assignee. Paginate with page/per_page. Note: this also returns pull requests; use search_issues to exclude them.", "inputSchema": "schemas/list_issues.json", "handler": "handlers/list_issues.js", "scope": "read" },
|
|
20
|
-
{ "name": "get_issue", "description": "Get full details of a specific issue including its body, labels, assignees, and milestone.", "inputSchema": "schemas/get_issue.json", "handler": "handlers/get_issue.js", "scope": "read" },
|
|
21
|
-
{ "name": "list_issue_comments", "description": "List all comments on an issue. Use this to read the full discussion thread before replying.", "inputSchema": "schemas/list_issue_comments.json", "handler": "handlers/list_issue_comments.js", "scope": "read" },
|
|
22
|
-
{ "name": "search_issues", "description": "Search issues using GitHub search syntax (e.g. 'is:open is:issue label:bug repo:owner/repo', 'is:issue no:assignee milestone:v2.0'). More powerful than list_issues for finding specific issues.", "inputSchema": "schemas/search_issues.json", "handler": "handlers/search_issues.js", "scope": "read" },
|
|
23
|
-
{ "name": "list_labels", "description": "List all labels available in a repository. Call this before add_labels_to_issue to see which labels exist.", "inputSchema": "schemas/list_labels.json", "handler": "handlers/list_labels.js", "scope": "read" },
|
|
45
|
+
{ "name": "list_issues", "description": "List issues for a repository. Filter by state (open/closed/all), labels (comma-separated), and assignee. Paginate with page/per_page. Note: this also returns pull requests; use search_issues to exclude them.", "inputSchema": "schemas/list_issues.json", "handler": "handlers/list_issues.js", "scope": "read", "toolset": "issues" },
|
|
46
|
+
{ "name": "get_issue", "description": "Get full details of a specific issue including its body, labels, assignees, and milestone.", "inputSchema": "schemas/get_issue.json", "handler": "handlers/get_issue.js", "scope": "read", "toolset": "issues" },
|
|
47
|
+
{ "name": "list_issue_comments", "description": "List all comments on an issue. Use this to read the full discussion thread before replying.", "inputSchema": "schemas/list_issue_comments.json", "handler": "handlers/list_issue_comments.js", "scope": "read", "toolset": "issues" },
|
|
48
|
+
{ "name": "search_issues", "description": "Search issues using GitHub search syntax (e.g. 'is:open is:issue label:bug repo:owner/repo', 'is:issue no:assignee milestone:v2.0'). More powerful than list_issues for finding specific issues.", "inputSchema": "schemas/search_issues.json", "handler": "handlers/search_issues.js", "scope": "read", "toolset": "issues" },
|
|
49
|
+
{ "name": "list_labels", "description": "List all labels available in a repository. Call this before add_labels_to_issue to see which labels exist.", "inputSchema": "schemas/list_labels.json", "handler": "handlers/list_labels.js", "scope": "read", "toolset": "issues" },
|
|
24
50
|
|
|
25
|
-
{ "name": "list_pull_requests", "description": "List pull requests for a repository. Filter by state, head branch, base branch. Sort and paginate results.", "inputSchema": "schemas/list_pull_requests.json", "handler": "handlers/list_pull_requests.js", "scope": "read" },
|
|
26
|
-
{ "name": "get_pull_request", "description": "Get full details of a specific pull request including title, body, state, merge status, head/base refs, reviewers, and labels.", "inputSchema": "schemas/get_pull_request.json", "handler": "handlers/get_pull_request.js", "scope": "read" },
|
|
27
|
-
{ "name": "get_pull_request_diff", "description": "Get the raw unified diff for a pull request. Returns the complete diff of all changes. For per-file details, use list_pull_request_files instead.", "inputSchema": "schemas/get_pull_request_diff.json", "handler": "handlers/get_pull_request_diff.js", "scope": "read" },
|
|
28
|
-
{ "name": "list_pull_request_files", "description": "List the files changed in a pull request with their status (added/modified/deleted) and patch diff per file. Essential for code review.", "inputSchema": "schemas/list_pull_request_files.json", "handler": "handlers/list_pull_request_files.js", "scope": "read" },
|
|
29
|
-
{ "name": "list_pull_request_comments", "description": "List inline review comments on a pull request (comments attached to specific lines of code).", "inputSchema": "schemas/list_pull_request_comments.json", "handler": "handlers/list_pull_request_comments.js", "scope": "read" },
|
|
30
|
-
{ "name": "search_pull_requests", "description": "Search pull requests using GitHub search syntax. Use 'is:pr' to scope to PRs (e.g. 'is:pr is:open author:octocat', 'is:pr review:required label:bug'). Returns matching PRs across repos.", "inputSchema": "schemas/search_pull_requests.json", "handler": "handlers/search_pull_requests.js", "scope": "read" },
|
|
51
|
+
{ "name": "list_pull_requests", "description": "List pull requests for a repository. Filter by state, head branch, base branch. Sort and paginate results.", "inputSchema": "schemas/list_pull_requests.json", "handler": "handlers/list_pull_requests.js", "scope": "read", "toolset": "pull_requests" },
|
|
52
|
+
{ "name": "get_pull_request", "description": "Get full details of a specific pull request including title, body, state, merge status, head/base refs, reviewers, and labels.", "inputSchema": "schemas/get_pull_request.json", "handler": "handlers/get_pull_request.js", "scope": "read", "toolset": "pull_requests" },
|
|
53
|
+
{ "name": "get_pull_request_diff", "description": "Get the raw unified diff for a pull request. Returns the complete diff of all changes. For per-file details, use list_pull_request_files instead.", "inputSchema": "schemas/get_pull_request_diff.json", "handler": "handlers/get_pull_request_diff.js", "scope": "read", "toolset": "pull_requests" },
|
|
54
|
+
{ "name": "list_pull_request_files", "description": "List the files changed in a pull request with their status (added/modified/deleted) and patch diff per file. Essential for code review.", "inputSchema": "schemas/list_pull_request_files.json", "handler": "handlers/list_pull_request_files.js", "scope": "read", "toolset": "pull_requests" },
|
|
55
|
+
{ "name": "list_pull_request_comments", "description": "List inline review comments on a pull request (comments attached to specific lines of code).", "inputSchema": "schemas/list_pull_request_comments.json", "handler": "handlers/list_pull_request_comments.js", "scope": "read", "toolset": "pull_requests" },
|
|
56
|
+
{ "name": "search_pull_requests", "description": "Search pull requests using GitHub search syntax. Use 'is:pr' to scope to PRs (e.g. 'is:pr is:open author:octocat', 'is:pr review:required label:bug'). Returns matching PRs across repos.", "inputSchema": "schemas/search_pull_requests.json", "handler": "handlers/search_pull_requests.js", "scope": "read", "toolset": "pull_requests" },
|
|
31
57
|
|
|
32
|
-
{ "name": "list_releases", "description": "List all releases for a repository, newest first.", "inputSchema": "schemas/list_releases.json", "handler": "handlers/list_releases.js", "scope": "read" },
|
|
33
|
-
{ "name": "get_latest_release", "description": "Get the latest published release for a repository. Use this to quickly check the current version.", "inputSchema": "schemas/owner_repo.json", "handler": "handlers/get_latest_release.js", "scope": "read" },
|
|
58
|
+
{ "name": "list_releases", "description": "List all releases for a repository, newest first.", "inputSchema": "schemas/list_releases.json", "handler": "handlers/list_releases.js", "scope": "read", "toolset": "releases" },
|
|
59
|
+
{ "name": "get_latest_release", "description": "Get the latest published release for a repository. Use this to quickly check the current version.", "inputSchema": "schemas/owner_repo.json", "handler": "handlers/get_latest_release.js", "scope": "read", "toolset": "releases" },
|
|
34
60
|
|
|
35
|
-
{ "name": "list_workflow_runs", "description": "List GitHub Actions workflow runs for a repository. Filter by branch, status (e.g. 'failure', 'success'), or triggering event. Use this to check CI status.", "inputSchema": "schemas/list_workflow_runs.json", "handler": "handlers/list_workflow_runs.js", "scope": "read" },
|
|
36
|
-
{ "name": "get_workflow_run", "description": "Get details of a specific GitHub Actions workflow run including its status, conclusion, timing, and associated commit.", "inputSchema": "schemas/get_workflow_run.json", "handler": "handlers/get_workflow_run.js", "scope": "read" },
|
|
37
|
-
{ "name": "get_job_logs", "description": "Get the log output for a specific GitHub Actions workflow job. Use this to diagnose CI failures. Get job_id from the GitHub Actions UI or the jobs list of a workflow run.", "inputSchema": "schemas/get_job_logs.json", "handler": "handlers/get_job_logs.js", "scope": "read" },
|
|
61
|
+
{ "name": "list_workflow_runs", "description": "List GitHub Actions workflow runs for a repository. Filter by branch, status (e.g. 'failure', 'success'), or triggering event. Use this to check CI status.", "inputSchema": "schemas/list_workflow_runs.json", "handler": "handlers/list_workflow_runs.js", "scope": "read", "toolset": "ci" },
|
|
62
|
+
{ "name": "get_workflow_run", "description": "Get details of a specific GitHub Actions workflow run including its status, conclusion, timing, and associated commit.", "inputSchema": "schemas/get_workflow_run.json", "handler": "handlers/get_workflow_run.js", "scope": "read", "toolset": "ci" },
|
|
63
|
+
{ "name": "get_job_logs", "description": "Get the log output for a specific GitHub Actions workflow job. Use this to diagnose CI failures. Get job_id from the GitHub Actions UI or the jobs list of a workflow run.", "inputSchema": "schemas/get_job_logs.json", "handler": "handlers/get_job_logs.js", "scope": "read", "toolset": "ci" },
|
|
38
64
|
|
|
39
|
-
{ "name": "create_repo", "description": "Create a new GitHub repository under the authenticated user's account.", "inputSchema": "schemas/create_repo.json", "handler": "handlers/create_repo.js", "scope": "write", "credentialVariants": ["classic_pat"] },
|
|
40
|
-
{ "name": "delete_repo", "description": "Permanently delete a repository. This is irreversible. Requires the delete_repo scope on classic PATs.", "inputSchema": "schemas/delete_repo.json", "handler": "handlers/delete_repo.js", "scope": "write", "credentialVariants": ["classic_pat"] },
|
|
41
|
-
{ "name": "fork_repo", "description": "Fork a repository into your account or an organization. The fork is created asynchronously; the response returns immediately with the new repo details.", "inputSchema": "schemas/fork_repo.json", "handler": "handlers/fork_repo.js", "scope": "write" },
|
|
65
|
+
{ "name": "create_repo", "description": "Create a new GitHub repository under the authenticated user's account.", "inputSchema": "schemas/create_repo.json", "handler": "handlers/create_repo.js", "scope": "write", "credentialVariants": ["classic_pat"], "toolset": "repo_admin" },
|
|
66
|
+
{ "name": "delete_repo", "description": "Permanently delete a repository. This is irreversible. Requires the delete_repo scope on classic PATs.", "inputSchema": "schemas/delete_repo.json", "handler": "handlers/delete_repo.js", "scope": "write", "credentialVariants": ["classic_pat"], "toolset": "repo_admin" },
|
|
67
|
+
{ "name": "fork_repo", "description": "Fork a repository into your account or an organization. The fork is created asynchronously; the response returns immediately with the new repo details.", "inputSchema": "schemas/fork_repo.json", "handler": "handlers/fork_repo.js", "scope": "write", "toolset": "repo_admin" },
|
|
42
68
|
|
|
43
|
-
{ "name": "create_branch", "description": "Create a new branch in a repository, branching from the repo's default branch by default.", "inputSchema": "schemas/create_branch.json", "handler": "handlers/create_branch.js", "scope": "write" },
|
|
44
|
-
{ "name": "delete_branch", "description": "Delete a branch. Typically used after a pull request is merged. Use list_branches to find the branch name first.", "inputSchema": "schemas/delete_branch.json", "handler": "handlers/delete_branch.js", "scope": "write" },
|
|
69
|
+
{ "name": "create_branch", "description": "Create a new branch in a repository, branching from the repo's default branch by default.", "inputSchema": "schemas/create_branch.json", "handler": "handlers/create_branch.js", "scope": "write", "toolset": "code" },
|
|
70
|
+
{ "name": "delete_branch", "description": "Delete a branch. Typically used after a pull request is merged. Use list_branches to find the branch name first.", "inputSchema": "schemas/delete_branch.json", "handler": "handlers/delete_branch.js", "scope": "write", "toolset": "code" },
|
|
45
71
|
|
|
46
|
-
{ "name": "
|
|
47
|
-
{ "name": "
|
|
48
|
-
{ "name": "
|
|
72
|
+
{ "name": "edit_file", "description": "Edit a file using search/replace. Fetches the file, applies edits, and commits the result. Each old_text must match the file content exactly, including whitespace and indentation. Use get_file_contents to verify content before editing. For multi-file atomic changes, use edit_files instead.", "inputSchema": "schemas/edit_file.json", "handler": "handlers/edit_file.js", "scope": "write", "toolset": "code" },
|
|
73
|
+
{ "name": "edit_files", "description": "Create, edit, and delete multiple files in a single atomic commit. Use action 'create' with content for new files, 'edit' with old_text/new_text search/replace pairs for existing files, 'delete' to remove files. All changes are committed together. For single-file edits, use edit_file instead.", "inputSchema": "schemas/edit_files.json", "handler": "handlers/edit_files.js", "scope": "write", "toolset": "code" },
|
|
74
|
+
{ "name": "create_file", "description": "Create a new file or overwrite an existing file's content in a single commit. Handles SHA resolution internally -- no need to fetch the file first. For partial edits to existing files, use edit_file instead.", "inputSchema": "schemas/create_file.json", "handler": "handlers/create_file.js", "scope": "write", "toolset": "code" },
|
|
75
|
+
{ "name": "delete_file", "description": "Delete a file from a repository. The file's SHA is fetched automatically. Creates a commit with the deletion.", "inputSchema": "schemas/delete_file.json", "handler": "handlers/delete_file.js", "scope": "write", "toolset": "code" },
|
|
49
76
|
|
|
50
|
-
{ "name": "create_pull_request", "description": "Open a new pull request from a head branch into a base branch.", "inputSchema": "schemas/create_pull_request.json", "handler": "handlers/create_pull_request.js", "scope": "write" },
|
|
51
|
-
{ "name": "update_pull_request", "description": "Edit a pull request's title, body, state (open/closed), base branch, or draft status.", "inputSchema": "schemas/update_pull_request.json", "handler": "handlers/update_pull_request.js", "scope": "write" },
|
|
52
|
-
{ "name": "merge_pull_request", "description": "Merge a pull request. Supports merge, squash, and rebase merge methods.", "inputSchema": "schemas/merge_pull_request.json", "handler": "handlers/merge_pull_request.js", "scope": "write" },
|
|
53
|
-
{ "name": "request_pull_request_reviewers", "description": "Request specific users or teams to review a pull request.", "inputSchema": "schemas/request_pull_request_reviewers.json", "handler": "handlers/request_pull_request_reviewers.js", "scope": "write" },
|
|
54
|
-
{ "name": "create_pull_request_review", "description": "Submit a pull request review. Use event=APPROVE to approve, REQUEST_CHANGES to request changes, or COMMENT to leave a comment-only review.", "inputSchema": "schemas/create_pull_request_review.json", "handler": "handlers/create_pull_request_review.js", "scope": "write" },
|
|
77
|
+
{ "name": "create_pull_request", "description": "Open a new pull request from a head branch into a base branch.", "inputSchema": "schemas/create_pull_request.json", "handler": "handlers/create_pull_request.js", "scope": "write", "toolset": "pull_requests" },
|
|
78
|
+
{ "name": "update_pull_request", "description": "Edit a pull request's title, body, state (open/closed), base branch, or draft status.", "inputSchema": "schemas/update_pull_request.json", "handler": "handlers/update_pull_request.js", "scope": "write", "toolset": "pull_requests" },
|
|
79
|
+
{ "name": "merge_pull_request", "description": "Merge a pull request. Supports merge, squash, and rebase merge methods.", "inputSchema": "schemas/merge_pull_request.json", "handler": "handlers/merge_pull_request.js", "scope": "write", "toolset": "pull_requests" },
|
|
80
|
+
{ "name": "request_pull_request_reviewers", "description": "Request specific users or teams to review a pull request.", "inputSchema": "schemas/request_pull_request_reviewers.json", "handler": "handlers/request_pull_request_reviewers.js", "scope": "write", "toolset": "pull_requests" },
|
|
81
|
+
{ "name": "create_pull_request_review", "description": "Submit a pull request review. Use event=APPROVE to approve, REQUEST_CHANGES to request changes, or COMMENT to leave a comment-only review.", "inputSchema": "schemas/create_pull_request_review.json", "handler": "handlers/create_pull_request_review.js", "scope": "write", "toolset": "pull_requests" },
|
|
55
82
|
|
|
56
|
-
{ "name": "create_issue", "description": "Create a new issue in a repository. Optionally assign users and add labels.", "inputSchema": "schemas/create_issue.json", "handler": "handlers/create_issue.js", "scope": "write" },
|
|
57
|
-
{ "name": "update_issue", "description": "Update fields on an existing issue (title, body, state, assignees, labels, milestone).", "inputSchema": "schemas/update_issue.json", "handler": "handlers/update_issue.js", "scope": "write" },
|
|
58
|
-
{ "name": "close_issue", "description": "Close an issue.", "inputSchema": "schemas/close_issue.json", "handler": "handlers/close_issue.js", "scope": "write" },
|
|
59
|
-
{ "name": "comment_on_issue", "description": "Add a comment to an issue or pull request (GitHub PRs share the issue comment thread). Use list_issue_comments to read existing comments first.", "inputSchema": "schemas/comment_on_issue.json", "handler": "handlers/comment_on_issue.js", "scope": "write" },
|
|
60
|
-
{ "name": "add_labels_to_issue", "description": "Add labels to an issue or pull request. Use list_labels to discover available labels before calling this.", "inputSchema": "schemas/add_labels_to_issue.json", "handler": "handlers/add_labels_to_issue.js", "scope": "write" },
|
|
83
|
+
{ "name": "create_issue", "description": "Create a new issue in a repository. Optionally assign users and add labels.", "inputSchema": "schemas/create_issue.json", "handler": "handlers/create_issue.js", "scope": "write", "toolset": "issues" },
|
|
84
|
+
{ "name": "update_issue", "description": "Update fields on an existing issue (title, body, state, assignees, labels, milestone).", "inputSchema": "schemas/update_issue.json", "handler": "handlers/update_issue.js", "scope": "write", "toolset": "issues" },
|
|
85
|
+
{ "name": "close_issue", "description": "Close an issue.", "inputSchema": "schemas/close_issue.json", "handler": "handlers/close_issue.js", "scope": "write", "toolset": "issues" },
|
|
86
|
+
{ "name": "comment_on_issue", "description": "Add a comment to an issue or pull request (GitHub PRs share the issue comment thread). Use list_issue_comments to read existing comments first.", "inputSchema": "schemas/comment_on_issue.json", "handler": "handlers/comment_on_issue.js", "scope": "write", "toolset": "issues" },
|
|
87
|
+
{ "name": "add_labels_to_issue", "description": "Add labels to an issue or pull request. Use list_labels to discover available labels before calling this.", "inputSchema": "schemas/add_labels_to_issue.json", "handler": "handlers/add_labels_to_issue.js", "scope": "write", "toolset": "issues" },
|
|
61
88
|
|
|
62
|
-
{ "name": "create_release", "description": "Create a new release from a tag. Can auto-generate release notes from commits. Set draft=true to save without publishing, prerelease=true for alpha/beta/rc versions.", "inputSchema": "schemas/create_release.json", "handler": "handlers/create_release.js", "scope": "write" }
|
|
89
|
+
{ "name": "create_release", "description": "Create a new release from a tag. Can auto-generate release notes from commits. Set draft=true to save without publishing, prerelease=true for alpha/beta/rc versions.", "inputSchema": "schemas/create_release.json", "handler": "handlers/create_release.js", "scope": "write", "toolset": "releases" }
|
|
63
90
|
]
|
|
64
91
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# GitHub coding workflow
|
|
2
|
+
|
|
3
|
+
## Branch-based workflow
|
|
4
|
+
|
|
5
|
+
Always work on a feature branch, never commit directly to main:
|
|
6
|
+
|
|
7
|
+
1. `create_branch` from the default branch
|
|
8
|
+
2. Make changes with `edit_file`, `edit_files`, `create_file`, or `delete_file` -- each call auto-commits to the branch
|
|
9
|
+
3. `create_pull_request` when done
|
|
10
|
+
4. `merge_pull_request` with `merge_method: "squash"` to collapse all commits into one clean commit on main
|
|
11
|
+
|
|
12
|
+
Multiple small commits on a feature branch are fine -- they get squash-merged into a single commit.
|
|
13
|
+
|
|
14
|
+
## Choosing the right write tool
|
|
15
|
+
|
|
16
|
+
- **`edit_file`** -- Surgical edits to a single existing file. Use for most code changes. Each call is a commit.
|
|
17
|
+
- **`edit_files`** -- Atomic multi-file changes (create + edit + delete in one commit). Use when files must change together to stay consistent (e.g. renaming across files, adding a module + updating imports).
|
|
18
|
+
- **`create_file`** -- Create a new file or completely replace an existing file's content. Use for new files or full rewrites.
|
|
19
|
+
- **`delete_file`** -- Remove a file.
|
|
20
|
+
|
|
21
|
+
## Search/replace rules for edit_file and edit_files
|
|
22
|
+
|
|
23
|
+
The `old_text` field must be an **exact match** of the text currently in the file:
|
|
24
|
+
|
|
25
|
+
- Whitespace matters: spaces, tabs, and indentation must match exactly
|
|
26
|
+
- Line breaks matter: include the exact newline characters
|
|
27
|
+
- Include enough surrounding context to uniquely identify the location
|
|
28
|
+
- Each edit replaces the **first occurrence** only. To replace multiple occurrences, use separate edits.
|
|
29
|
+
|
|
30
|
+
**Before editing**, call `get_file_contents` to see the file's current content. This avoids failed edits from stale or incorrect assumptions about file content.
|
|
31
|
+
|
|
32
|
+
## Reading before writing
|
|
33
|
+
|
|
34
|
+
- Use `get_repo_tree` to discover the project structure and file paths
|
|
35
|
+
- Use `get_file_contents` to read a file before editing it
|
|
36
|
+
- Use `search_code` to find where something is defined or used across the repo
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"branch": { "type": "string", "description": "Branch to commit to" },
|
|
7
|
+
"path": { "type": "string", "description": "File path to create (e.g. 'src/utils/helpers.ts')" },
|
|
8
|
+
"content": { "type": "string", "description": "Plain text file content" },
|
|
9
|
+
"message": { "type": "string", "description": "Commit message" }
|
|
10
|
+
},
|
|
11
|
+
"required": ["owner", "repo", "branch", "path", "content", "message"],
|
|
12
|
+
"additionalProperties": false
|
|
13
|
+
}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"repo": { "type": "string", "description": "Repository name" },
|
|
6
6
|
"path": { "type": "string", "description": "Path of the file to delete (e.g. 'src/old-file.js')" },
|
|
7
7
|
"message": { "type": "string", "description": "Commit message" },
|
|
8
|
-
"sha": { "type": "string", "description": "
|
|
8
|
+
"sha": { "type": "string", "description": "Optional blob SHA. If omitted, the SHA is fetched automatically." },
|
|
9
9
|
"branch": { "type": "string", "description": "Branch to delete the file from (defaults to the repo's default branch)" }
|
|
10
10
|
},
|
|
11
|
-
"required": ["owner", "repo", "path", "message"
|
|
11
|
+
"required": ["owner", "repo", "path", "message"],
|
|
12
12
|
"additionalProperties": false
|
|
13
13
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"branch": { "type": "string", "description": "Branch to commit to" },
|
|
7
|
+
"path": { "type": "string", "description": "Path of the file to edit (e.g. 'src/index.ts')" },
|
|
8
|
+
"edits": {
|
|
9
|
+
"type": "array",
|
|
10
|
+
"description": "Search/replace operations applied in order. Each old_text must match the file content exactly, including whitespace and indentation.",
|
|
11
|
+
"items": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"properties": {
|
|
14
|
+
"old_text": { "type": "string", "description": "Exact text to find in the file" },
|
|
15
|
+
"new_text": { "type": "string", "description": "Text to replace it with" }
|
|
16
|
+
},
|
|
17
|
+
"required": ["old_text", "new_text"],
|
|
18
|
+
"additionalProperties": false
|
|
19
|
+
},
|
|
20
|
+
"minItems": 1
|
|
21
|
+
},
|
|
22
|
+
"message": { "type": "string", "description": "Commit message" }
|
|
23
|
+
},
|
|
24
|
+
"required": ["owner", "repo", "branch", "path", "edits", "message"],
|
|
25
|
+
"additionalProperties": false
|
|
26
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"branch": { "type": "string", "description": "Branch to commit to" },
|
|
7
|
+
"message": { "type": "string", "description": "Commit message" },
|
|
8
|
+
"files": {
|
|
9
|
+
"type": "array",
|
|
10
|
+
"description": "Files to create, edit, or delete in this commit",
|
|
11
|
+
"items": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"properties": {
|
|
14
|
+
"path": { "type": "string", "description": "File path in the repository" },
|
|
15
|
+
"action": { "type": "string", "enum": ["create", "edit", "delete"], "description": "'create': new file or overwrite with content. 'edit': apply search/replace edits to existing file. 'delete': remove the file." },
|
|
16
|
+
"content": { "type": "string", "description": "Full file content (required for 'create' action)" },
|
|
17
|
+
"edits": {
|
|
18
|
+
"type": "array",
|
|
19
|
+
"description": "Search/replace pairs (required for 'edit' action). Each old_text must match exactly, including whitespace.",
|
|
20
|
+
"items": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"properties": {
|
|
23
|
+
"old_text": { "type": "string", "description": "Exact text to find" },
|
|
24
|
+
"new_text": { "type": "string", "description": "Text to replace it with" }
|
|
25
|
+
},
|
|
26
|
+
"required": ["old_text", "new_text"],
|
|
27
|
+
"additionalProperties": false
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"required": ["path", "action"],
|
|
32
|
+
"additionalProperties": false
|
|
33
|
+
},
|
|
34
|
+
"minItems": 1
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"required": ["owner", "repo", "branch", "message", "files"],
|
|
38
|
+
"additionalProperties": false
|
|
39
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Google Calendar live integration tests
|
|
2
|
+
# Shared Google credentials live in /.env.test.google — set those up first.
|
|
3
|
+
#
|
|
4
|
+
# Calendar ID to run tests against (defaults to 'primary' if omitted)
|
|
5
|
+
GOOGLE_CALENDAR_TEST_CALENDAR_ID=
|
|
6
|
+
# Set to any non-empty value to enable admin write tests (creates/deletes calendars)
|
|
7
|
+
GOOGLE_CALENDAR_TEST_ADMIN_WRITE=
|
|
8
|
+
# A plain-text quick-add string for the quick_add_event test (e.g. "Lunch tomorrow at noon")
|
|
9
|
+
GOOGLE_CALENDAR_TEST_QUICK_ADD=
|
|
10
|
+
# Calendar ID to use as the move destination in move_event tests
|
|
11
|
+
GOOGLE_CALENDAR_TEST_MOVE_DEST=
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Google Calendar
|
|
2
|
+
|
|
3
|
+
**17 tools** across 2 toolsets
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## Credential variants
|
|
8
|
+
|
|
9
|
+
| Variant | Label |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `service_account` | Service Account (recommended) _(default)_ |
|
|
12
|
+
| `oauth_token` | OAuth Access Token (short-lived) |
|
|
13
|
+
|
|
14
|
+
## Toolsets
|
|
15
|
+
|
|
16
|
+
| Toolset | Description |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `events` | Browse, schedule, and manage calendar events |
|
|
19
|
+
| `sharing` | Control who can access calendars |
|
|
20
|
+
|
|
21
|
+
## Tools
|
|
22
|
+
|
|
23
|
+
| Tool | Scope | Toolset | Description |
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
| `list_calendars` | read | `events` | List all calendars in the authenticated user's calendar list, including the primary calen… |
|
|
26
|
+
| `get_calendar` | read | `events` | Get details for a specific calendar by ID, including its summary, description, timezone, … |
|
|
27
|
+
| `list_events` | read | `events` | List events in a calendar with optional time range, text search, and pagination. Use cale… |
|
|
28
|
+
| `get_event` | read | `events` | Get a specific event by its ID from a calendar. Returns full event details including summ… |
|
|
29
|
+
| `list_colors` | read | `events` | Get the set of color definitions available for calendars and events. Returns colorId valu… |
|
|
30
|
+
| `freebusy_query` | read | `events` | Query free/busy availability for one or more calendars within a time range. Useful for fi… |
|
|
31
|
+
| `list_settings` | read | `events` | List the authenticated user's Google Calendar settings, such as timezone, date format, an… |
|
|
32
|
+
| `create_event` | write | `events` | Create a new event in a calendar. Required fields: calendarId, summary, start, end. Use {… |
|
|
33
|
+
| `patch_event` | write | `events` | Partially update an event by providing only the fields to change. All other fields are pr… |
|
|
34
|
+
| `delete_event` | write | `events` | Delete an event from a calendar. This permanently removes the event. For recurring events… |
|
|
35
|
+
| `move_event` | write | `events` | Move an event from one calendar to another. Provide the source calendarId, eventId, and t… |
|
|
36
|
+
| `quick_add` | write | `events` | Create an event using a natural language text string. Parses the text to extract event de… |
|
|
37
|
+
| `list_acl` | admin | `sharing` | List the Access Control List (ACL) rules for a calendar. Returns rules defining who has a… |
|
|
38
|
+
| `get_acl` | admin | `sharing` | Get a specific ACL rule by its rule ID for a calendar. Use list_acl to find rule IDs. |
|
|
39
|
+
| `insert_acl` | admin | `sharing` | Add a new ACL rule to grant a user or group access to a calendar. Roles: 'reader' (view),… |
|
|
40
|
+
| `update_acl` | admin | `sharing` | Update an existing ACL rule to change a user's or group's permission level on a calendar.… |
|
|
41
|
+
| `delete_acl` | admin | `sharing` | Remove an ACL rule from a calendar, revoking the associated user's or group's access. Use… |
|
|
@@ -6,7 +6,7 @@ import { loadIntegrationTools } from '../../../../server/src/integrations/dataLo
|
|
|
6
6
|
// Required env vars:
|
|
7
7
|
// - Either GOOGLE_TOKEN, OR (GOOGLE_SERVICE_ACCOUNT_JSON + GOOGLE_IMPERSONATE_SUBJECT)
|
|
8
8
|
// Optional:
|
|
9
|
-
// -
|
|
9
|
+
// - GOOGLE_CALENDAR_TEST_CALENDAR_ID (defaults to 'primary')
|
|
10
10
|
|
|
11
11
|
interface Ctx {
|
|
12
12
|
calendarId: string
|
|
@@ -27,9 +27,9 @@ suite('google-calendar write & admin handlers (live)', () => {
|
|
|
27
27
|
let buildAdmin: (name: string) => ((input: any) => Promise<any>)
|
|
28
28
|
|
|
29
29
|
beforeAll(async () => {
|
|
30
|
-
const {
|
|
30
|
+
const { GOOGLE_CALENDAR_TEST_CALENDAR_ID } = env
|
|
31
31
|
|
|
32
|
-
ctx.calendarId =
|
|
32
|
+
ctx.calendarId = GOOGLE_CALENDAR_TEST_CALENDAR_ID || 'primary'
|
|
33
33
|
|
|
34
34
|
const credentialStore = {
|
|
35
35
|
getCredentials: async () => ({
|
|
@@ -114,7 +114,7 @@ suite('google-calendar write & admin handlers (live)', () => {
|
|
|
114
114
|
}, 30000)
|
|
115
115
|
|
|
116
116
|
it('insert_acl -> get_acl -> update_acl -> delete_acl (admin)', async () => {
|
|
117
|
-
if (!process.env.
|
|
117
|
+
if (!process.env.GOOGLE_CALENDAR_TEST_ADMIN_WRITE)
|
|
118
118
|
return expect(true).toBe(true)
|
|
119
119
|
const insert_acl = buildAdmin('insert_acl')
|
|
120
120
|
const created = await insert_acl({ calendarId: ctx.calendarId, rule: { scope: { type: 'default' }, role: 'reader' } })
|
|
@@ -132,7 +132,7 @@ suite('google-calendar write & admin handlers (live)', () => {
|
|
|
132
132
|
}, 90000)
|
|
133
133
|
|
|
134
134
|
it('quick_add creates a simple event', async () => {
|
|
135
|
-
if (!process.env.
|
|
135
|
+
if (!process.env.GOOGLE_CALENDAR_TEST_QUICK_ADD)
|
|
136
136
|
return expect(true).toBe(true)
|
|
137
137
|
const quick_add = buildWrite('quick_add')
|
|
138
138
|
const res = await quick_add({ calendarId: ctx.calendarId, text: `Lunch tomorrow ${Date.now()}` })
|
|
@@ -140,7 +140,7 @@ suite('google-calendar write & admin handlers (live)', () => {
|
|
|
140
140
|
}, 60000)
|
|
141
141
|
|
|
142
142
|
it('move_event moves an event when provided a source event', async () => {
|
|
143
|
-
if (!process.env.
|
|
143
|
+
if (!process.env.GOOGLE_CALENDAR_TEST_MOVE_DEST)
|
|
144
144
|
return expect(true).toBe(true)
|
|
145
145
|
const create_event = buildWrite('create_event')
|
|
146
146
|
const now = new Date()
|
|
@@ -149,7 +149,7 @@ suite('google-calendar write & admin handlers (live)', () => {
|
|
|
149
149
|
const eventId = created?.id
|
|
150
150
|
expect(eventId).toBeTruthy()
|
|
151
151
|
const move_event = buildWrite('move_event')
|
|
152
|
-
const moved = await move_event({ calendarId: ctx.calendarId, eventId, destinationId: process.env.
|
|
152
|
+
const moved = await move_event({ calendarId: ctx.calendarId, eventId, destinationId: process.env.GOOGLE_CALENDAR_TEST_MOVE_DEST })
|
|
153
153
|
expect(moved?.id).toBeTruthy()
|
|
154
154
|
}, 90000)
|
|
155
155
|
})
|
|
@@ -1,25 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "google-calendar",
|
|
3
3
|
"version": "0.1.0",
|
|
4
|
+
"toolsets": {
|
|
5
|
+
"events": {
|
|
6
|
+
"label": "Events",
|
|
7
|
+
"description": "Browse, schedule, and manage calendar events"
|
|
8
|
+
},
|
|
9
|
+
"sharing": {
|
|
10
|
+
"label": "Sharing",
|
|
11
|
+
"description": "Control who can access calendars"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
4
14
|
"tools": [
|
|
5
|
-
{ "name": "list_calendars", "description": "List all calendars in the authenticated user's calendar list, including the primary calendar and any subscribed or shared calendars. Returns calendar IDs needed for list_events, create_event, and other calendar-specific tools. The primary calendar has calendarId='primary'.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_calendars.js", "scope": "read" },
|
|
6
|
-
{ "name": "get_calendar", "description": "Get details for a specific calendar by ID, including its summary, description, timezone, and access role. Use list_calendars to find calendar IDs.", "inputSchema": "schemas/id_calendar.json", "handler": "handlers/get_calendar.js", "scope": "read" },
|
|
7
|
-
{ "name": "list_events", "description": "List events in a calendar with optional time range, text search, and pagination. Use calendarId='primary' for the user's main calendar. Set singleEvents=true and orderBy='startTime' to get recurring events expanded into individual instances in chronological order. Times must be RFC3339 format (e.g. '2024-01-15T09:00:00Z' or '2024-01-15T09:00:00-05:00'). Defaults to 25 results. Use pageToken from the response for the next page.", "inputSchema": "schemas/list_events.json", "handler": "handlers/list_events.js", "scope": "read" },
|
|
8
|
-
{ "name": "get_event", "description": "Get a specific event by its ID from a calendar. Returns full event details including summary, start, end, attendees, location, description, recurrence, and status. Use list_events to find event IDs.", "inputSchema": "schemas/id_calendar_event.json", "handler": "handlers/get_event.js", "scope": "read" },
|
|
9
|
-
{ "name": "list_colors", "description": "Get the set of color definitions available for calendars and events. Returns colorId values and their hex codes. Use colorId values in create_event or patch_event to color-code events.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_colors.js", "scope": "read" },
|
|
10
|
-
{ "name": "freebusy_query", "description": "Query free/busy availability for one or more calendars within a time range. Useful for finding open slots or checking if attendees are available. Provide timeMin, timeMax (RFC3339), and an items array of calendar IDs. Returns busy time blocks for each calendar.", "inputSchema": "schemas/freebusy_query.json", "handler": "handlers/freebusy_query.js", "scope": "read" },
|
|
11
|
-
{ "name": "list_settings", "description": "List the authenticated user's Google Calendar settings, such as timezone, date format, and notification preferences.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_settings.js", "scope": "read" },
|
|
15
|
+
{ "name": "list_calendars", "description": "List all calendars in the authenticated user's calendar list, including the primary calendar and any subscribed or shared calendars. Returns calendar IDs needed for list_events, create_event, and other calendar-specific tools. The primary calendar has calendarId='primary'.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_calendars.js", "scope": "read", "toolset": "events" },
|
|
16
|
+
{ "name": "get_calendar", "description": "Get details for a specific calendar by ID, including its summary, description, timezone, and access role. Use list_calendars to find calendar IDs.", "inputSchema": "schemas/id_calendar.json", "handler": "handlers/get_calendar.js", "scope": "read", "toolset": "events" },
|
|
17
|
+
{ "name": "list_events", "description": "List events in a calendar with optional time range, text search, and pagination. Use calendarId='primary' for the user's main calendar. Set singleEvents=true and orderBy='startTime' to get recurring events expanded into individual instances in chronological order. Times must be RFC3339 format (e.g. '2024-01-15T09:00:00Z' or '2024-01-15T09:00:00-05:00'). Defaults to 25 results. Use pageToken from the response for the next page.", "inputSchema": "schemas/list_events.json", "handler": "handlers/list_events.js", "scope": "read", "toolset": "events" },
|
|
18
|
+
{ "name": "get_event", "description": "Get a specific event by its ID from a calendar. Returns full event details including summary, start, end, attendees, location, description, recurrence, and status. Use list_events to find event IDs.", "inputSchema": "schemas/id_calendar_event.json", "handler": "handlers/get_event.js", "scope": "read", "toolset": "events" },
|
|
19
|
+
{ "name": "list_colors", "description": "Get the set of color definitions available for calendars and events. Returns colorId values and their hex codes. Use colorId values in create_event or patch_event to color-code events.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_colors.js", "scope": "read", "toolset": "events" },
|
|
20
|
+
{ "name": "freebusy_query", "description": "Query free/busy availability for one or more calendars within a time range. Useful for finding open slots or checking if attendees are available. Provide timeMin, timeMax (RFC3339), and an items array of calendar IDs. Returns busy time blocks for each calendar.", "inputSchema": "schemas/freebusy_query.json", "handler": "handlers/freebusy_query.js", "scope": "read", "toolset": "events" },
|
|
21
|
+
{ "name": "list_settings", "description": "List the authenticated user's Google Calendar settings, such as timezone, date format, and notification preferences.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_settings.js", "scope": "read", "toolset": "events" },
|
|
12
22
|
|
|
13
|
-
{ "name": "create_event", "description": "Create a new event in a calendar. Required fields: calendarId, summary, start, end. Use {dateTime, timeZone} for timed events (e.g. {\"dateTime\": \"2024-01-15T10:00:00\", \"timeZone\": \"America/New_York\"}) or {date} for all-day events (e.g. {\"date\": \"2024-01-15\"}). Optional fields: description, location, attendees (array of {email}), recurrence (RRULE strings), reminders, colorId, visibility. The calendarId field is extracted automatically; all other fields are sent as the event body.", "inputSchema": "schemas/create_event.json", "handler": "handlers/create_event.js", "scope": "write" },
|
|
14
|
-
{ "name": "patch_event", "description": "Partially update an event by providing only the fields to change. All other fields are preserved. Use this as the standard event update method. Provide changes in a 'body' object along with calendarId and eventId.", "inputSchema": "schemas/patch_event.json", "handler": "handlers/patch_event.js", "scope": "write" },
|
|
15
|
-
{ "name": "delete_event", "description": "Delete an event from a calendar. This permanently removes the event. For recurring events, this deletes only the specified instance. Use list_events to find event IDs.", "inputSchema": "schemas/id_calendar_event.json", "handler": "handlers/delete_event.js", "scope": "write" },
|
|
16
|
-
{ "name": "move_event", "description": "Move an event from one calendar to another. Provide the source calendarId, eventId, and the destination calendarId. Returns the updated event in the destination calendar.", "inputSchema": "schemas/move_event.json", "handler": "handlers/move_event.js", "scope": "write" },
|
|
17
|
-
{ "name": "quick_add", "description": "Create an event using a natural language text string. Parses the text to extract event details automatically. Examples: 'Meeting with Bob tomorrow at 3pm for 1 hour', 'Dentist appointment on Friday at 2pm', 'Weekly standup every Monday at 9am'. Requires calendarId (use 'primary') and text.", "inputSchema": "schemas/quick_add.json", "handler": "handlers/quick_add.js", "scope": "write" },
|
|
23
|
+
{ "name": "create_event", "description": "Create a new event in a calendar. Required fields: calendarId, summary, start, end. Use {dateTime, timeZone} for timed events (e.g. {\"dateTime\": \"2024-01-15T10:00:00\", \"timeZone\": \"America/New_York\"}) or {date} for all-day events (e.g. {\"date\": \"2024-01-15\"}). Optional fields: description, location, attendees (array of {email}), recurrence (RRULE strings), reminders, colorId, visibility. The calendarId field is extracted automatically; all other fields are sent as the event body.", "inputSchema": "schemas/create_event.json", "handler": "handlers/create_event.js", "scope": "write", "toolset": "events" },
|
|
24
|
+
{ "name": "patch_event", "description": "Partially update an event by providing only the fields to change. All other fields are preserved. Use this as the standard event update method. Provide changes in a 'body' object along with calendarId and eventId.", "inputSchema": "schemas/patch_event.json", "handler": "handlers/patch_event.js", "scope": "write", "toolset": "events" },
|
|
25
|
+
{ "name": "delete_event", "description": "Delete an event from a calendar. This permanently removes the event. For recurring events, this deletes only the specified instance. Use list_events to find event IDs.", "inputSchema": "schemas/id_calendar_event.json", "handler": "handlers/delete_event.js", "scope": "write", "toolset": "events" },
|
|
26
|
+
{ "name": "move_event", "description": "Move an event from one calendar to another. Provide the source calendarId, eventId, and the destination calendarId. Returns the updated event in the destination calendar.", "inputSchema": "schemas/move_event.json", "handler": "handlers/move_event.js", "scope": "write", "toolset": "events" },
|
|
27
|
+
{ "name": "quick_add", "description": "Create an event using a natural language text string. Parses the text to extract event details automatically. Examples: 'Meeting with Bob tomorrow at 3pm for 1 hour', 'Dentist appointment on Friday at 2pm', 'Weekly standup every Monday at 9am'. Requires calendarId (use 'primary') and text.", "inputSchema": "schemas/quick_add.json", "handler": "handlers/quick_add.js", "scope": "write", "toolset": "events" },
|
|
18
28
|
|
|
19
|
-
{ "name": "list_acl", "description": "List the Access Control List (ACL) rules for a calendar. Returns rules defining who has access and at what permission level (reader, writer, owner). Use get_calendar to find the calendarId.", "inputSchema": "schemas/id_calendar.json", "handler": "handlers/list_acl.js", "scope": "admin" },
|
|
20
|
-
{ "name": "get_acl", "description": "Get a specific ACL rule by its rule ID for a calendar. Use list_acl to find rule IDs.", "inputSchema": "schemas/get_acl.json", "handler": "handlers/get_acl.js", "scope": "admin" },
|
|
21
|
-
{ "name": "insert_acl", "description": "Add a new ACL rule to grant a user or group access to a calendar. Roles: 'reader' (view), 'writer' (view + edit events), 'owner' (full control). Scope must include type ('user', 'group', 'domain', or 'default') and optionally value (email or domain).", "inputSchema": "schemas/insert_acl.json", "handler": "handlers/insert_acl.js", "scope": "admin" },
|
|
22
|
-
{ "name": "update_acl", "description": "Update an existing ACL rule to change a user's or group's permission level on a calendar. Use list_acl to find the rule ID.", "inputSchema": "schemas/update_acl.json", "handler": "handlers/update_acl.js", "scope": "admin" },
|
|
23
|
-
{ "name": "delete_acl", "description": "Remove an ACL rule from a calendar, revoking the associated user's or group's access. Use list_acl to find the rule ID.", "inputSchema": "schemas/delete_acl.json", "handler": "handlers/delete_acl.js", "scope": "admin" }
|
|
29
|
+
{ "name": "list_acl", "description": "List the Access Control List (ACL) rules for a calendar. Returns rules defining who has access and at what permission level (reader, writer, owner). Use get_calendar to find the calendarId.", "inputSchema": "schemas/id_calendar.json", "handler": "handlers/list_acl.js", "scope": "admin", "toolset": "sharing" },
|
|
30
|
+
{ "name": "get_acl", "description": "Get a specific ACL rule by its rule ID for a calendar. Use list_acl to find rule IDs.", "inputSchema": "schemas/get_acl.json", "handler": "handlers/get_acl.js", "scope": "admin", "toolset": "sharing" },
|
|
31
|
+
{ "name": "insert_acl", "description": "Add a new ACL rule to grant a user or group access to a calendar. Roles: 'reader' (view), 'writer' (view + edit events), 'owner' (full control). Scope must include type ('user', 'group', 'domain', or 'default') and optionally value (email or domain).", "inputSchema": "schemas/insert_acl.json", "handler": "handlers/insert_acl.js", "scope": "admin", "toolset": "sharing" },
|
|
32
|
+
{ "name": "update_acl", "description": "Update an existing ACL rule to change a user's or group's permission level on a calendar. Use list_acl to find the rule ID.", "inputSchema": "schemas/update_acl.json", "handler": "handlers/update_acl.js", "scope": "admin", "toolset": "sharing" },
|
|
33
|
+
{ "name": "delete_acl", "description": "Remove an ACL rule from a calendar, revoking the associated user's or group's access. Use list_acl to find the rule ID.", "inputSchema": "schemas/delete_acl.json", "handler": "handlers/delete_acl.js", "scope": "admin", "toolset": "sharing" }
|
|
24
34
|
]
|
|
25
35
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Google Docs
|
|
2
|
+
|
|
3
|
+
**13 tools**
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## Credential variants
|
|
8
|
+
|
|
9
|
+
| Variant | Label |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `service_account` | Service Account (recommended) _(default)_ |
|
|
12
|
+
| `oauth_token` | OAuth Access Token (short-lived) |
|
|
13
|
+
|
|
14
|
+
## Tools
|
|
15
|
+
|
|
16
|
+
| Tool | Scope | Description |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| `read_document` | read | Read a Google Doc and return its content as clean Markdown. Preserves headings, bold, ita… |
|
|
19
|
+
| `create_document` | write | Create a new empty Google Doc with the given title. Returns the created document's metada… |
|
|
20
|
+
| `batch_update` | write | Send a documents.batchUpdate request to modify a document with one or more structured req… |
|
|
21
|
+
| `append_text` | write | Append plain text to the end of a Google Doc. Automatically fetches the document to find … |
|
|
22
|
+
| `replace_all_text` | write | Replace all occurrences of a text string in a Google Doc with new text. Case-sensitive by… |
|
|
23
|
+
| `style_first_match` | write | Find the first occurrence of text in a document and apply a TextStyle to it (bold, italic… |
|
|
24
|
+
| `insert_text_after_first_match` | write | Find the first occurrence of text and insert new text immediately before or after it. Use… |
|
|
25
|
+
| `insert_table_after_first_match` | write | Find the first occurrence of text and insert a table with the specified number of rows an… |
|
|
26
|
+
| `insert_page_break_after_first_match` | write | Find the first occurrence of text and insert a page break nearby. Useful for structuring … |
|
|
27
|
+
| `insert_inline_image_after_first_match` | write | Find the first occurrence of text and insert an inline image nearby, referenced by URL. R… |
|
|
28
|
+
| `delete_first_match` | write | Find the first occurrence of text in the document and delete it. Only the first match is … |
|
|
29
|
+
| `update_paragraph_style_for_first_match` | write | Find the first occurrence of text and update the paragraph style for the paragraph contai… |
|
|
30
|
+
| `update_document_style` | write | Update document-level style properties such as page size (pageSize.width, pageSize.height… |
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Google Drive
|
|
2
|
+
|
|
3
|
+
**9 tools**
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## Credential variants
|
|
8
|
+
|
|
9
|
+
| Variant | Label |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `service_account` | Service Account (recommended) _(default)_ |
|
|
12
|
+
| `oauth_token` | OAuth Access Token (short-lived) |
|
|
13
|
+
|
|
14
|
+
## Tools
|
|
15
|
+
|
|
16
|
+
| Tool | Scope | Description |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| `list_files` | read | List files in a Google Drive folder or across all of Drive. Returns id, name, mimeType, m… |
|
|
19
|
+
| `search_files` | read | Search Google Drive for files by name, MIME type, or raw Drive query syntax. Use the 'nam… |
|
|
20
|
+
| `get_file` | read | Get metadata for a Drive file or folder by ID. Returns id, name, mimeType, modifiedTime, … |
|
|
21
|
+
| `get_file_content` | read | Read the text content of a Drive file. For Google Workspace files (Docs, Sheets, Slides),… |
|
|
22
|
+
| `create_folder` | write | Create a new folder in Google Drive. Optionally nest it inside a parent folder using pare… |
|
|
23
|
+
| `create_file` | write | Create a new Drive file (metadata only -- no content upload). To create a Google Workspac… |
|
|
24
|
+
| `move_file` | write | Move a file or folder to a different parent folder by updating its parents. Provide the d… |
|
|
25
|
+
| `share_file` | write | Share a Drive file or folder with a specific user, group, domain, or make it publicly acc… |
|
|
26
|
+
| `delete_file` | write | Permanently and immediately delete a Drive file or folder by ID. This bypasses Trash and … |
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Gmail live integration tests
|
|
2
|
+
# Shared Google credentials live in /.env.test.google — set those up first.
|
|
3
|
+
#
|
|
4
|
+
# Optional seed IDs — the suite will discover them automatically if omitted
|
|
5
|
+
GMAIL_TEST_MESSAGE_ID=
|
|
6
|
+
GMAIL_TEST_THREAD_ID=
|
|
7
|
+
# Email address to use for send/reply tests (must be accessible by the credential)
|
|
8
|
+
GMAIL_TEST_SEND_TO=
|
|
9
|
+
# Optional: specific message/thread to delete in delete tests
|
|
10
|
+
GMAIL_TEST_DELETE_MESSAGE_ID=
|
|
11
|
+
GMAIL_TEST_DELETE_THREAD_ID=
|