MCP Core Tools
Easy8 core tools are available from the built-in MCP server when the related service classes load successfully and the effective API user has the required permissions.
Every tool publishes a JSON schema through tools/list; clients should use that schema as the source of truth for accepted arguments and supported filters. Cross-field requirements are still validated by the tool at runtime.
easy8_projects_list
Lists visible projects.
Use it when the client needs to resolve a project before creating or filtering issues.
Arguments:
limit- maximum number of projects to returnoffset- pagination offsetname- project name filter
easy8_users_me
Returns the effective Easy8 user for this MCP request.
Use it when the prompt contains terms like me, my, mine, or assigned to me and the client wants to resolve the current user before calling another tool.
Example request:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "easy8_users_me",
"arguments": {}
}
}
easy8_users_search
Searches visible active users and returns IDs suitable for assignment.
Arguments:
limit- maximum number of users to returnoffset- pagination offsetquery- name, login, or numeric user ID to searchproject_id- optional visible project ID; limits results to project members
easy8_issues_list
Lists visible issues.
For prompts such as Show me all issues which are assigned to me, call this tool with assigned_to_id: "me". The server resolves me through the effective API user described in User identity.
The response includes issue metadata, description, comments_count, start_date, due_date, tag_list, and nested reference objects for related records such as project, tracker, status, priority, author, and assigned_to. List responses include offset, limit, and has_more metadata. When has_more is true, the response also includes next_offset. The response includes total_count only when include_total_count is true; counting broad result sets can be expensive.
Arguments:
limit- maximum number of issues to returnoffset- pagination offsetproject_id- filter by projectassigned_to_id- filter by assignee user ID, or use"me"for the effective current MCP userstatus- high-level status filter,all,open, orclosedstatus_id- specific status ID or list of IDssubject- subject text filterdue_date_period- relative due date filtersort_by- sortable EasyIssueQuery column name, such ascreated_onorupdated_onsort_direction- sort direction,ascordescinclude_total_count- whentrue, includetotal_count; use only when the client needs an exact count
easy8_issues_get
Returns one visible issue by ID.
Arguments:
id- issue IDinclude_journals- whentrue, include a paginated page of visible journal notesjournals_limit- maximum number of journal notes returned wheninclude_journalsistruejournals_offset- pagination offset for journal notes wheninclude_journalsistrue
The response includes issue metadata, description, tag_list, and comments_count. When include_journals is true, the response also includes journals, journals_total_count, journals_offset, and journals_limit.
easy8_issues_comments_list
Lists visible issue journal notes ordered from newest to oldest.
Arguments:
id- issue IDlimit- maximum number of commentsoffset- pagination offset
The response includes comments, total_count, offset, and limit.
Issue attachment tools
Use these tools when the user asks to attach files to a task/issue, list files already attached to a task/issue, or read an attachment so the assistant can analyze its contents.
Tools:
easy8_issue_attachments_list- lists visible attachments on an issueeasy8_issue_attachments_upload- uploads content provided in the tool arguments as a new issue attachmenteasy8_issue_attachments_read- reads one visible text-like issue attachment into the tool response
Important behavior:
- Do not pass local file paths to
easy8_issue_attachments_upload; the Easy8 server cannot read files from the client machine. - To upload a local file, the client-side assistant must read the file content first, then pass that content as
content. - Use
content_encoding: "plain"for text andcontent_encoding: "base64"for binary files. easy8_issue_attachments_readreturnscontent_encoding: "plain"for text-like files.easy8_issue_attachments_readdoes not return raw binary or base64 content. Images, PDFs, spreadsheets, and other binary files return metadata withanalysis_supported: false; Claude needs those files passed by the client as proper image/document/file content blocks.- Large text attachments may be truncated according to
max_bytes.
Example upload request:
{
"jsonrpc": "2.0",
"id": 12,
"method": "tools/call",
"params": {
"name": "easy8_issue_attachments_upload",
"arguments": {
"id": 123,
"filename": "analysis.md",
"content": "# Analysis\n\nSummary from the assistant.",
"content_encoding": "plain",
"content_type": "text/markdown",
"description": "Generated analysis"
}
}
}
Example read request:
{
"jsonrpc": "2.0",
"id": 13,
"method": "tools/call",
"params": {
"name": "easy8_issue_attachments_read",
"arguments": {
"id": 123,
"attachment_id": 456,
"content_format": "auto",
"max_bytes": 262144
}
}
}
easy8_issues_create
Creates a new issue.
Arguments include:
- project selectors:
project_id,projectId,project,project_name,project_identifier - subject aliases:
subject,title,name - issue fields:
tracker_id,description,description_format,assigned_to_id,priority_id,status_id,parent_issue_id,parent_id,start_date,due_date - custom fields:
custom_fields
Notes:
- the issue subject is required
- a project selector is required
- permissions are checked with standard Easy8 authorization
- required custom fields are validated server-side
parent_issue_idcreates a subtask;parent_idis accepted as an alias whenparent_issue_idis absent
easy8_issues_update
Updates an existing issue.
Arguments include:
id- issue IDsubjectdescriptionassigned_to_idpriority_idstatus_idparent_issue_id- moves the issue under another issue; usenullto remove the parentparent_id- alias forparent_issue_idwhenparent_issue_idis absentstart_datedue_datenotes- appends a new comment to the issue journaldescription_formatandnotes_format- set tomarkdownwhen sending Markdown text
Project workflow tools
easy8_projects_geteasy8_projects_createeasy8_projects_updateeasy8_projects_archiveeasy8_projects_unarchiveeasy8_projects_closeeasy8_projects_reopeneasy8_projects_copy
Project member tools
easy8_project_members_listeasy8_project_members_addeasy8_project_members_update
Project version tools
easy8_project_versions_listeasy8_project_versions_geteasy8_project_versions_createeasy8_project_versions_update
Project issue category tools
easy8_project_issue_categories_listeasy8_project_issue_categories_createeasy8_project_issue_categories_update
Metadata and issue workflow tools
easy8_issue_statuses_listeasy8_issue_priorities_listeasy8_trackers_listeasy8_time_entry_activities_listeasy8_custom_fields_listeasy8_issues_transition_optionseasy8_issues_comments_createeasy8_issue_attachments_listeasy8_issue_attachments_uploadeasy8_issue_attachments_readeasy8_issue_relations_listeasy8_issue_relations_create
easy8_time_entry_activities_list
Lists time entry activities allowed for a project or issue context.
Use it before easy8_time_entries_create when the client does not already know the correct activity_id. This is especially important when correcting or splitting wrongly logged time into multiple entries on different projects, because each project can allow a different set of time entry activities.
Arguments:
project_id- project context for activity lookupissue_id- issue context for activity lookup; the issue project is usedactive- when omitted, only active activities are returnedlimit- maximum number of activitiesoffset- pagination offset
When both issue_id and project_id are provided, the project must match the issue project. The response includes time_entry_activities, project_id, issue_id when an issue was used, and default_activity_id when Easy8 can resolve one.
Time entry tools
easy8_time_entries_listeasy8_time_entries_geteasy8_time_entries_createeasy8_time_entries_update
easy8_time_entries_create
Creates a time entry using Easy8 safe attributes and permissions.
Required runtime context:
- provide either
issue_idorproject_id - provide
hoursandspent_on - provide
activity_idunless Easy8 can resolve a default or fixed issue activity
Recommended client flow:
- Resolve the target issue or project.
- Call
easy8_time_entry_activities_listwith thatissue_idorproject_id. - Use one returned
time_entry_activities[].idasactivity_idineasy8_time_entries_create.
If activity_id is missing and Easy8 cannot resolve a default, the tool returns a tool-level error that tells the client to call easy8_time_entry_activities_list and includes visible candidate activity IDs.