Skip to content

Commit e3cfbff

Browse files
committed
tool consolidation and prompt updates
1 parent 0b65b1b commit e3cfbff

File tree

6 files changed

+1095
-2368
lines changed

6 files changed

+1095
-2368
lines changed

README.md

Lines changed: 21 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -795,63 +795,27 @@ Options are:
795795

796796
<summary>Projects</summary>
797797

798-
- **add_project_item** - Add project item
799-
- `item_id`: The numeric ID of the issue or pull request to add to the project. (number, required)
800-
- `item_type`: The item's type, either issue or pull_request. (string, required)
801-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
802-
- `owner_type`: Owner type (string, required)
803-
- `project_number`: The project's number. (number, required)
804-
805-
- **delete_project_item** - Delete project item
806-
- `item_id`: The internal project item ID to delete from the project (not the issue or pull request ID). (number, required)
807-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
808-
- `owner_type`: Owner type (string, required)
809-
- `project_number`: The project's number. (number, required)
810-
811-
- **get_project** - Get project
812-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
813-
- `owner_type`: Owner type (string, required)
814-
- `project_number`: The project's number (number, required)
815-
816-
- **get_project_field** - Get project field
817-
- `field_id`: The field's id. (number, required)
818-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
819-
- `owner_type`: Owner type (string, required)
820-
- `project_number`: The project's number. (number, required)
821-
822-
- **get_project_item** - Get project item
823-
- `fields`: Specific list of field IDs to include in the response (e.g. ["102589", "985201", "169875"]). If not provided, only the title field is included. (string[], optional)
824-
- `item_id`: The item's ID. (number, required)
825-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
826-
- `owner_type`: Owner type (string, required)
827-
- `project_number`: The project's number. (number, required)
828-
829-
- **list_project_fields** - List project fields
830-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
831-
- `owner_type`: Owner type (string, required)
832-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
833-
- `project_number`: The project's number. (number, required)
834-
835-
- **list_project_items** - List project items
836-
- `fields`: Specific list of field IDs to include in the response (e.g. ["102589", "985201", "169875"]). If not provided, only the title field is included. (string[], optional)
837-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
838-
- `owner_type`: Owner type (string, required)
839-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
840-
- `project_number`: The project's number. (number, required)
841-
- `query`: Search query to filter items (string, optional)
842-
843-
- **list_projects** - List projects
844-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
845-
- `owner_type`: Owner type (string, required)
846-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
847-
- `query`: Filter projects by a search query (matches title and description) (string, optional)
848-
849-
- **update_project_item** - Update project item
850-
- `item_id`: The unique identifier of the project item. This is not the issue or pull request ID. (number, required)
851-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
852-
- `owner_type`: Owner type (string, required)
853-
- `project_number`: The project's number. (number, required)
854-
- `updated_field`: Object consisting of the ID of the project field to update and the new value for the field. To clear the field, set value to null. Example: {"id": 123456, "value": "New Value"} (object, required)
798+
- **project_read** - Read project information
799+
- `after`: Next page cursor (from pageInfo.endCursor) (string, optional)
800+
- `before`: Previous page cursor (from pageInfo.startCursor) (string, optional)
801+
- `field_id`: Field ID (required for get_project_field) (number, optional)
802+
- `fields`: Field IDs to include (e.g. ["102589", "985201"]). CRITICAL: Always provide to get field values. Without this, only titles returned. Get IDs from list_project_fields first. (string[], optional)
803+
- `item_id`: Item ID (required for get_project_item) (number, optional)
804+
- `method`: Read operation: get_project, list_projects, get_project_field, list_project_fields (call FIRST for IDs), get_project_item, list_project_items (use query + fields) (string, required)
805+
- `owner`: GitHub username or org name (case-insensitive) (string, required)
806+
- `owner_type`: Owner type: 'user' or 'org' (string, required)
807+
- `per_page`: Results per page (max 20) (number, optional)
808+
- `project_number`: Project number (required for most methods) (number, optional)
809+
- `query`: Filter string (CRITICAL for list_project_items). Combine filters by SPACE for logical AND (order doesn't matter): e.g. 'state:open is:issue priority:p1 label:bug'. **Content Type:** Use 'is:issue' for issues, 'is:pr' (or 'is:pull-request') for pull requests. **Format Rules:** Qualifiers (left of ':') with spaces use hyphens. Values (right of ':') with spaces use quotes. Examples: 'state:open is:issue sprint-name:"Q1 Planning"', 'is:pr team-name:"Backend Team" status:"In Review"', 'parent-issue:"github/repo#123"'. Filters: is:issue/pr/open/closed/merged, assignee:@me/username, label:name, status:value, priority:p1, updated:>@today-7d, title:*text*, -label:wontfix (negate), label:bug,critical (OR with comma), priority:1..3 (range), no:assignee, has:label, iteration:@current (string, optional)
810+
811+
- **project_write** - Modify project items
812+
- `item_id`: For add: issue/PR ID. For update/delete: project item ID (not issue/PR ID) (number, required)
813+
- `item_type`: Type to add: 'issue' or 'pull_request' (required for add_project_item) (string, optional)
814+
- `method`: Write operation: add_project_item (needs item_type, item_id), update_project_item (needs item_id, updated_field), delete_project_item (needs item_id) (string, required)
815+
- `owner`: GitHub username or org name (case-insensitive) (string, required)
816+
- `owner_type`: Owner type: 'user' or 'org' (string, required)
817+
- `project_number`: Project number (number, required)
818+
- `updated_field`: Field update object (required for update_project_item). Format: {"id": 123456, "value": <value>}. Value types: text=string, single-select=option ID (number), date=ISO string, number=number. Set value to null to clear. (object, optional)
855819

856820
</details>
857821

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"annotations": {
3+
"title": "Read project information",
4+
"readOnlyHint": true
5+
},
6+
"description": "Read operations for GitHub Projects V2.\n\nMethods: get_project, list_projects, get_project_field, list_project_fields, get_project_item, list_project_items\n\n**For list_project_items:**\n1. Call list_project_fields FIRST for field IDs\n2. Use 'query' to filter (e.g., 'state:open priority:p1')\n3. Use 'fields' with IDs from step 1\n\nExamples: query='state:open priority:p1', query='state:closed priority:p1 milestone:\"X\" assignee:@me', query='unblocks:*copilot*'",
7+
"inputSchema": {
8+
"properties": {
9+
"after": {
10+
"description": "Next page cursor (from pageInfo.endCursor)",
11+
"type": "string"
12+
},
13+
"before": {
14+
"description": "Previous page cursor (from pageInfo.startCursor)",
15+
"type": "string"
16+
},
17+
"field_id": {
18+
"description": "Field ID (required for get_project_field)",
19+
"type": "number"
20+
},
21+
"fields": {
22+
"description": "Field IDs to include (e.g. [\"102589\", \"985201\"]). CRITICAL: Always provide to get field values. Without this, only titles returned. Get IDs from list_project_fields first.",
23+
"items": {
24+
"type": "string"
25+
},
26+
"type": "array"
27+
},
28+
"item_id": {
29+
"description": "Item ID (required for get_project_item)",
30+
"type": "number"
31+
},
32+
"method": {
33+
"description": "Read operation: get_project, list_projects, get_project_field, list_project_fields (call FIRST for IDs), get_project_item, list_project_items (use query + fields)",
34+
"enum": [
35+
"get_project",
36+
"list_projects",
37+
"get_project_field",
38+
"list_project_fields",
39+
"get_project_item",
40+
"list_project_items"
41+
],
42+
"type": "string"
43+
},
44+
"owner": {
45+
"description": "GitHub username or org name (case-insensitive)",
46+
"type": "string"
47+
},
48+
"owner_type": {
49+
"description": "Owner type: 'user' or 'org'",
50+
"enum": [
51+
"user",
52+
"org"
53+
],
54+
"type": "string"
55+
},
56+
"per_page": {
57+
"description": "Results per page (max 20)",
58+
"type": "number"
59+
},
60+
"project_number": {
61+
"description": "Project number (required for most methods)",
62+
"type": "number"
63+
},
64+
"query": {
65+
"description": "Filter string (CRITICAL for list_project_items). Combine filters by SPACE for logical AND (order doesn't matter): e.g. 'state:open is:issue priority:p1 label:bug'. **Content Type:** Use 'is:issue' for issues, 'is:pr' (or 'is:pull-request') for pull requests. **Format Rules:** Qualifiers (left of ':') with spaces use hyphens. Values (right of ':') with spaces use quotes. Examples: 'state:open is:issue sprint-name:\"Q1 Planning\"', 'is:pr team-name:\"Backend Team\" status:\"In Review\"', 'parent-issue:\"github/repo#123\"'. Filters: is:issue/pr/open/closed/merged, assignee:@me/username, label:name, status:value, priority:p1, updated:\u003e@today-7d, title:*text*, -label:wontfix (negate), label:bug,critical (OR with comma), priority:1..3 (range), no:assignee, has:label, iteration:@current",
66+
"type": "string"
67+
}
68+
},
69+
"required": [
70+
"method",
71+
"owner_type",
72+
"owner"
73+
],
74+
"type": "object"
75+
},
76+
"name": "project_read"
77+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{
2+
"annotations": {
3+
"title": "Modify project items",
4+
"readOnlyHint": false
5+
},
6+
"description": "Write operations for GitHub Projects V2.\n\nMethods: add_project_item (add issue/PR), update_project_item (update fields), delete_project_item (remove item).\nNote: item_id for add is the issue/PR ID; for update/delete it's the project item ID.",
7+
"inputSchema": {
8+
"properties": {
9+
"item_id": {
10+
"description": "For add: issue/PR ID. For update/delete: project item ID (not issue/PR ID)",
11+
"type": "number"
12+
},
13+
"item_type": {
14+
"description": "Type to add: 'issue' or 'pull_request' (required for add_project_item)",
15+
"enum": [
16+
"issue",
17+
"pull_request"
18+
],
19+
"type": "string"
20+
},
21+
"method": {
22+
"description": "Write operation: add_project_item (needs item_type, item_id), update_project_item (needs item_id, updated_field), delete_project_item (needs item_id)",
23+
"enum": [
24+
"add_project_item",
25+
"update_project_item",
26+
"delete_project_item"
27+
],
28+
"type": "string"
29+
},
30+
"owner": {
31+
"description": "GitHub username or org name (case-insensitive)",
32+
"type": "string"
33+
},
34+
"owner_type": {
35+
"description": "Owner type: 'user' or 'org'",
36+
"enum": [
37+
"user",
38+
"org"
39+
],
40+
"type": "string"
41+
},
42+
"project_number": {
43+
"description": "Project number",
44+
"type": "number"
45+
},
46+
"updated_field": {
47+
"description": "Field update object (required for update_project_item). Format: {\"id\": 123456, \"value\": \u003cvalue\u003e}. Value types: text=string, single-select=option ID (number), date=ISO string, number=number. Set value to null to clear.",
48+
"properties": {},
49+
"type": "object"
50+
}
51+
},
52+
"required": [
53+
"method",
54+
"owner_type",
55+
"owner",
56+
"project_number",
57+
"item_id"
58+
],
59+
"type": "object"
60+
},
61+
"name": "project_write"
62+
}

0 commit comments

Comments
 (0)