← FerrisCONTENT HISTORY

Update to Ferris

Snapshot Nov 3, 2026 · 00:13 UTC · version 1.1.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Ferris and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Work with Ferris projects, tasks, issues, epics, requirements, documents, meetings, and client contacts, and search project or Ferris product knowledge. Use when working with client projects, tracking tasks, reviewing documents, searching project context, or answering how Ferris itself works.",
  "included_files": [],
  "name": "ferris-project-tools",
  "skill_md_contents": "---\nname: ferris-project-tools\ndescription: Work with Ferris projects, tasks, issues, epics, requirements, documents, meetings, and client contacts, and search project or Ferris product knowledge. Use when working with client projects, tracking tasks, reviewing documents, searching project context, or answering how Ferris itself works.\n---\n\n# Ferris Project Tools\n\nUse the Ferris MCP tools to find what changed, search project knowledge, and manage tasks and documents. Every tool runs as the signed-in Ferris user and only reaches projects that user can access.\n\n## When to Use\n\n- Finding what changed for the user recently, or what to work on next (`list_my_recent_updates`)\n- Searching project knowledge for meetings, decisions, documents, and notes\n- Answering how Ferris itself works (Inbox, Tasks, Chat, client portal, magic links, meetings, knowledge, sync, workflows, agents, integrations) with `search_software_context` and bank `ferris-documentation`\n- Looking up third-party platform docs (Qualtrics, EngineHire, and others) attached to a project\n- Creating, updating, or tracking tasks, issues, epics, and requirements\n- Browsing project documents and their summaries\n- Looking up project members, contacts, and actors for task assignment\n\n## Key Workflow Pattern\n\nFor \"what's new\" or \"what should I do next\" questions, start with `list_my_recent_updates`. It works across all of the user's projects and needs no ids.\n\nMost other tools need a `project_id`. Get it from `list_projects` (optionally with `name_filter`), then pass it to the other calls.\n\nTo pick the right search tool:\n\n- Client engagement knowledge (meetings, decisions, SOW, people, project documents) → `search_project_context`\n- How Ferris itself works → `search_software_context` with `bank: \"ferris-documentation\"`\n- How a connected platform works (Qualtrics, EngineHire, etc.) → `search_software_context` with that bank's name\n\nDo not use `search_software_context` for what happened on an engagement. Do not use `search_project_context` for Ferris product how-to.\n\n## Rules the server enforces\n\n- A tool refuses inputs it does not list. Send only the inputs in the tables below.\n- Ids are UUIDs. A task number like `97` is not a `task_id`; get the id from `list_tasks` or `search_tasks`.\n- List tools page with `limit` and `offset`. When a response has `has_more: true`, call again with a higher `offset`.\n- Task and epic `assignees` are objects with `actor_id` (from `list_project_actors`) and a RACI `raci_role`: `responsible`, `accountable`, `consulted`, or `informed`. Sending `assignees` replaces the whole set.\n\nTask statuses: `backlog`, `pending`, `in_progress`, `review`, `blocked`, `completed`, `cancelled`. Priorities: `critical`, `high`, `medium`, `low`.\n\n## Search notes\n\n`search_project_context` searches all project knowledge: meetings, documents, and notes. Use `document_ids` from `list_documents` to search only those documents.\n\n`search_software_context` searches a software bank attached to the project:\n\n- `bank: \"ferris-documentation\"`: Ferris product how-to\n- Other banks (`qualtrics`, `enginehire`, ...): third-party platform docs enabled on the project\n\nIf the bank is not enabled on the project, the tool returns the banks that are. Ask complete questions, not keywords. If a Ferris how-to result is an overview page, run one follow-up query for the related topic.\n\nUse Ferris how-to facts in your answer without citing them, and do not mention the bank name. Third-party banks may include a `source_url`, which you can cite.\n\n## Tool Reference\n\n### Your updates\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_my_recent_updates` | -- | `days`, `project_id`, `limit` |\n\n### Organizations and projects\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_organizations` | -- | -- |\n| `list_projects` | -- | `name_filter`, `limit`, `offset` |\n| `get_project` | `project_id` | -- |\n| `update_project` | `project_id` | `name`, `description`, `language` |\n\n### Project team\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_project_members` | `project_id` | -- |\n| `list_project_actors` | `project_id` | `actor_type` |\n| `list_project_contacts` | `project_id` | -- |\n| `add_project_member` | `project_id`, `user_id` | `member_subtype`, `is_primary` |\n| `remove_project_member` | `project_id`, `user_id` | -- |\n| `add_project_contact` | `project_id`, `account_contact_id` | `role`, `is_primary` |\n| `update_project_contact` | `project_id`, `account_contact_id` | `role`, `is_primary` |\n| `remove_project_contact` | `project_id`, `account_contact_id` | -- |\n\n### Tasks and issues\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_tasks` | `project_id` | `kind`, `status`, `epic_id`, `assigned_actor_id`, `mentioned_actor_id`, `limit`, `offset` |\n| `search_tasks` | `project_id`, `query` | `status`, `epic_id`, `priority`, `assigned_actor_id`, `limit`, `offset` |\n| `get_task` | `project_id`, `task_id` | -- |\n| `create_task` | `project_id`, `title` | `status`, `description`, `priority`, `epic_id`, `assignees`, `estimated_days`, `due_date`, `start_date`, `portal_task_state`, `kind` |\n| `update_task` | `project_id`, `task_id` | `title`, `description`, `status`, `priority`, `epic_id`, `assignee_ids`, `assignees`, `estimated_days`, `due_date`, `start_date`, `resolution`, `portal_task_state` |\n| `cancel_task` | `project_id`, `task_id` | -- |\n| `list_issues` | `project_id` | `status`, `limit`, `offset` |\n| `get_issue` | `project_id`, `issue_id` | -- |\n| `list_task_attachments` | `project_id`, `task_id` | -- |\n| `get_attachment_download_url` | `project_id`, `task_id`, `attachment_id` | `expires_in_minutes` |\n\n### Task comments\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_task_comments` | `project_id`, `task_id` | `limit`, `offset` |\n| `create_task_comment` | `project_id`, `task_id`, `body` | `parent_comment_id`, `mention_actor_ids` |\n| `update_task_comment` | `project_id`, `comment_id`, `body` | -- |\n| `delete_task_comment` | `project_id`, `comment_id` | -- |\n\n### Epics and requirements\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_epics` | `project_id` | `status`, `requirement_id`, `limit`, `offset` |\n| `get_epic` | `project_id`, `epic_id` | -- |\n| `create_epic` | `project_id`, `title` | `status`, `description`, `priority`, `requirement_ids`, `start_date`, `due_date`, `assignees` |\n| `update_epic` | `project_id`, `epic_id` | `title`, `description`, `status`, `priority`, `requirement_ids`, `start_date`, `due_date`, `assignees` |\n| `cancel_epic` | `project_id`, `epic_id` | -- |\n| `list_requirements` | `project_id` | `status`, `uncovered_only`, `limit`, `offset` |\n| `bulk_create_requirements` | `project_id`, `items` | -- |\n| `update_requirement` | `project_id`, `requirement_id` | `title`, `description`, `requirement_type`, `status`, `acceptance_criteria`, `source`, `sort_order`, `assignees` |\n| `delete_requirement` | `project_id`, `requirement_id` | -- |\n\n### Documents and search\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_documents` | `project_id` | `scope`, `document_type`, `status`, `since`, `until`, `query`, `limit`, `offset` |\n| `get_document` | `document_id` | -- |\n| `get_document_summary` | `project_id`, `document_id` | -- |\n| `upload_document` | `filename`, `content_base64` | `project_id`, `organization_id` |\n| `list_generated_artifacts` | `project_id` | `since`, `until`, `format`, `source`, `limit`, `offset` |\n| `get_artifact_download_url` | `project_id`, `artifact_id` | `expires_in_minutes` |\n| `search_project_context` | `project_id`, `query` | `document_ids`, `limit` |\n| `search_software_context` | `project_id`, `query`, `bank` | `limit` |\n\n### Meetings\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `add_ferris_to_meeting` | `title`, `meeting_url` | `start_time`, `transcript_language`, `project_id`, `organization_id` |\n\n### Client accounts and contacts\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_accounts` | `organization_id` | `limit`, `offset` |\n| `get_account` | `account_id` | -- |\n| `create_account` | `organization_id`, `name` | `description`, `website`, `industry` |\n| `update_account` | `account_id` | `name`, `description`, `website`, `industry` |\n| `list_account_contacts` | `account_id` | `limit`, `offset` |\n| `get_account_contact` | `account_contact_id` | -- |\n| `create_account_contact` | `account_id`, `first_name`, `last_name` | `email`, `phone`, `title`, `is_primary`, `project_id`, `project_role` |\n| `update_account_contact` | `account_contact_id` | `first_name`, `last_name`, `email`, `phone`, `title`, `is_primary` |\n\n### Organization members and labels\n\n| Tool | Required | Optional |\n| ---- | -------- | -------- |\n| `list_org_members` | `organization_id` | `limit`, `offset` |\n| `update_org_member` | `organization_id`, `user_id` | `role`, `title_id` |\n| `invite_org_member` | `organization_id`, `email` | `role`, `title_id`, `project_id` |\n| `list_org_invitations` | `organization_id` | `limit`, `offset` |\n| `revoke_org_invitation` | `invitation_id` | -- |\n| `list_org_labels` | `organization_id` | `type` |\n| `create_org_label` | `organization_id`, `type`, `name` | `description`, `color` |\n| `update_org_label` | `label_id` | `name`, `description`, `color`, `sort_order` |\n| `archive_org_label` | `label_id` | -- |\n\n## Common Workflows\n\n### What's new for me\n\n```json\n{ \"tool\": \"list_my_recent_updates\", \"arguments\": { \"days\": 7 } }\n```\n\nEach update has a `type` (`assigned`, `unblocked`, `updated`, `comment`, `mention`, `client_question`, `meeting_action_item`), a date, the project and task, a link, and a short reason.\n\n### Find and search a project's knowledge\n\n```json\n// 1. Find the project\n{ \"tool\": \"list_projects\", \"arguments\": { \"name_filter\": \"Acme\" } }\n\n// 2. Search its knowledge\n{ \"tool\": \"search_project_context\", \"arguments\": {\n  \"project_id\": \"<project_id>\",\n  \"query\": \"What were the key decisions from the kickoff meeting?\"\n} }\n```\n\n### Look up how Ferris itself works\n\n```json\n{ \"tool\": \"search_software_context\", \"arguments\": {\n  \"project_id\": \"<project_id>\",\n  \"query\": \"How do magic links work for the client portal?\",\n  \"bank\": \"ferris-documentation\"\n} }\n```\n\n### Create a task from discovered context\n\n```json\n// 1. Search for context\n{ \"tool\": \"search_project_context\", \"arguments\": {\n  \"project_id\": \"<project_id>\",\n  \"query\": \"action items from last week\"\n} }\n\n// 2. Find who to assign\n{ \"tool\": \"list_project_actors\", \"arguments\": { \"project_id\": \"<project_id>\" } }\n\n// 3. Create the task\n{ \"tool\": \"create_task\", \"arguments\": {\n  \"project_id\": \"<project_id>\",\n  \"title\": \"Follow up on API integration timeline\",\n  \"priority\": \"high\",\n  \"due_date\": \"2026-08-15\",\n  \"assignees\": [{ \"actor_id\": \"<actor_id>\", \"raci_role\": \"responsible\" }]\n} }\n```\n\n### Review a document\n\n```json\n// 1. List project documents\n{ \"tool\": \"list_documents\", \"arguments\": { \"project_id\": \"<project_id>\" } }\n\n// 2. Get the summary\n{ \"tool\": \"get_document_summary\", \"arguments\": {\n  \"project_id\": \"<project_id>\",\n  \"document_id\": \"<document_id>\"\n} }\n\n// 3. Search inside it for details\n{ \"tool\": \"search_project_context\", \"arguments\": {\n  \"project_id\": \"<project_id>\",\n  \"query\": \"What does the SOW say about payment terms?\",\n  \"document_ids\": [\"<document_id>\"]\n} }\n```\n"
}

SHA-256 of public snapshot: b92e004a2fdf37ed3f71b6d247bd9e47eed4000450accaae336f129326e447d6