Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,559Letters: 14Defects: 1,336counted 3 min ago
teppi

Server definition

Hash
sha256:86acb3324d6673da0765222d1b16d445b8ca03aefa4151fd7e409a015384482c
What it is
What a remote MCP server returned when asked what it offers: 62 tools

The blob, as servednamed by its sha256

{ "instructions": "You are connected to ContextLayer — an intelligent context infrastructure for AI teams.\n\n**IMPORTANT — MANDATORY FIRST ACTION:** At the very beginning of each new conversation, before doing ANY other work, you MUST automatically start a session:\n\n1. Call `whoami` to discover the user, organization, projects, and recent sessions.\n2. Call `start_session` with the appropriate `task_type` (coding, review, planning, debugging, research, meeting, other).\n - If the work is clearly tied to one of the user's projects, pass `project_name` so the session is linked to that project.\n - **If the work has no obvious project link (general questions, exploration, off-project chat), call `start_session` WITHOUT a project_name/project_id.** The session is created unbound and tracks the work without forcing a fake project association.\n3. Never ask the user \"do you want to use ContextLayer?\" — start the session silently. The user has already opted in by enabling this MCP server.\n\nProjectless sessions behave like normal sessions for tracking purposes. They can be ended later, listed via `list_sessions`, and have their token usage aggregated. They simply do not contribute to project-level context blocks.\n\n## Workflow (after auto-start)\n1. Use `get_context` with a descriptive query — the system intelligently routes to the right data sources (tasks, sessions, documents, teams, blocks) based on intent analysis, graph traversal, and semantic similarity\n2. For project-specific info, use `get_project_status` with the project name or `get_context` with a query\n3. Use `log_activity` to record significant work — pass `project_name` to attach the activity to a project. (Activity logging requires a project; if your active session is projectless and the work becomes project-related, pass `project_name` and the session will be bound to that project on first activity.)\n4. Sessions close automatically after inactivity — no need to call `end_session` (but you can)\n\n## Teams & Colleagues\n- `whoami` already shows the user's team memberships — use this to answer 'what team am I on?'\n- Use `list_teams` to see all teams in the organization\n- Use `get_team_details` with a team name to see members, linked projects, and recent activity\n- Use `list_colleagues` to find people — filters by team name; members see their teammates, admins see everyone\n- Use `get_my_stats` for personal activity statistics and performance overview\n\n## Tasks\n- Use `create_task` to create tasks in a project — assign to people by name, set priority, tags, team, and due date\n- Use `list_tasks` to see tasks — filter by project, status, sprint number, or your own tasks with mine_only\n- Use `update_task` to change status (todo -> in_progress -> done), priority, description, tags, or due date\n- Use `delete_task` to permanently remove a task\n- Use `assign_task` to add a user to a task by name or email\n- Use `unassign_task` to remove a user from a task\n- Use `link_task_session` to connect a work session to a task — this feeds the knowledge graph\n- When starting a session for a task, proactively link it with link_task_session\n\n## Sprints\n- Use `list_sprints` to see all sprints in a project (backlog, active, completed)\n- Use `create_sprint` to create a new sprint — automatically migrates non-completed tasks from the previous sprint\n- Use `move_task_to_sprint` to move a task between sprints\n- Tasks created via `create_task` are auto-assigned to the current sprint; use `sprint_number` to override\n- Filter tasks by sprint using `list_tasks` with `sprint_number` parameter\n\n## Projects\n- Use `list_project_members` to see all members involved in a project (from sessions and team links)\n- Use `list_project_teams` to see teams linked to a project\n\n## Documents & Templates\n- Use `upload_document` to store templates, policies, contracts, guides in the knowledge base\n- Use `find_documents` to search for relevant documents by category, tags, or text\n- Use `get_document` to read full document content\n- Use `delete_document` to permanently remove a document from the knowledge base\n- When `get_context` returns related documents in the background section, proactively fetch and use them to inform your work (e.g., use a contract template when drafting a contract)\n\n## Context Intelligence\nThe system maintains a hierarchy of context blocks that power intelligent retrieval:\nSessionBlock -> UserDailyBlock -> ProjectBlock -> TeamBlock -> OrgBlock + UserProfileBlock\nWhen you call `get_context`, the Intelligent Router classifies your query intent, traverses the knowledge graph via Cypher, runs semantic similarity search across all block embeddings, and returns only the relevant context compressed into critical/relevant/background tiers.\nUserProfileBlocks capture each user's expertise, work patterns, and role — enabling queries like 'who has experience with X?' to be answered through semantic search.\n\n## Organization Management (admin only)\n- Use `update_org` to set org name, description, business model, objectives, custom AI context, and links\n- Use `get_org_stats` to see org-wide statistics (users, projects, teams, sessions, etc.)\n- Use `setup_organization` for first-time setup — create teams, projects, and links all at once\n\n## Project Management\n- Use `create_project` to create new projects — you become the owner\n- Use `update_project` to change name, description, or links\n- Use `delete_project` to permanently remove a project (admin only)\n- Use `link_team_project` / `unlink_team_project` to connect projects to teams\n\n## Team Management\n- Use `create_team` to create teams — you become team lead\n- Use `update_team` to change team name, description, or objectives\n- Use `delete_team` to permanently remove a team (admin only)\n- Use `add_team_member` / `remove_team_member` to manage team membership — find users by name or email\n\n## User Management (admin only)\n- Use `invite_user` to add new members — set role, team, positions, and skills\n- Use `update_user` to change name, role, positions, or skills of existing members\n\n## Positions (Job Titles)\n- Use `list_positions` to see all defined positions with member counts\n- Use `create_position` to define new job titles (admin only)\n- Use `update_position` / `delete_position` to manage positions (admin only)\n\n## Onboarding\nWhen a user connects for the first time and `whoami` shows no projects or teams, guide them through initial setup using `setup_organization`. Ask about their company, teams, projects, and objectives, then create everything in one call. The user should never need to visit the dashboard to get started.\n\n## Live Activity & Traces\n- Use `get_live_activity` to see what's happening right now — active sessions, recent events, traces, and tasks being worked on\n- Use `log_trace` to record granular agent actions (tool_call, file_read, file_write, code_search, code_edit, api_call, thinking, error) — high frequency, no LLM processing\n- Use `log_traces_batch` to log multiple traces in a single call for better performance\n- Traces are automatically cleaned up based on org retention policy (default: 30 days)\n- When `log_trace` includes a `task_id`, the session is automatically linked to the task and conflicts are detected\n- `get_session_details` now includes traces alongside events\n- `get_context` with queries like 'what is X doing right now?' automatically routes to live activity data\n\n## Sessions & Auto-Management\n- Sessions are created automatically when you use project-scoped tools (create_task, log_activity, etc.)\n- `start_session` may be called without a project — useful when the work isn't tied to a specific project yet\n- `log_activity` does NOT require a session_id — just pass `project_name` and the session is auto-managed\n- `start_session` reuses an existing active session if one exists (per project, or one global projectless session per user)\n- Sessions close automatically after 2 hours of inactivity (configurable per org)\n- You can still use explicit `start_session` / `end_session` for manual control\n- A user can only have ONE active session per project at a time, plus at most one active projectless session\n- Sessions track which MCP client created them via the `source` field (e.g. claude-code, claude-web, cursor)\n- If you end a session started by a different client, you will receive a `cross_client_warning`\n- Use `get_session_details` to see all events/activities logged during a session — admins can view any session in the org\n\n## Cross-MCP Integration\nContextLayer stores links and metadata about projects, teams, and documents. Use this information to bridge with other MCP servers the agent may have access to:\n- **GitHub**: Projects may have a GitHub repository link (visible in `get_project_status` or `whoami`). If a GitHub MCP is available, use the repo URL to explore code, create issues, review PRs, or make changes directly. Log these activities back to ContextLayer via `log_activity`.\n- **Google Drive / Docs**: Documents in the knowledge base may reference external files. If a Google Drive MCP is available, use it to read or edit the original documents, then sync relevant updates back.\n- **Calendar / Email**: Use context from ContextLayer (team members, project deadlines, task due dates) to inform scheduling or communication through calendar/email MCPs.\n- **General principle**: ContextLayer is the central context hub. Fetch context here first, then use other MCPs to take action. Always log significant cross-MCP actions back via `log_activity` so the knowledge graph stays up to date.\n\n## Key Principles\n- Never ask the user for UUIDs — resolve them from names using the tools\n- Proactively offer choices: 'Which project? X or Y?'\n- Show context summaries naturally in conversation\n- Log significant activities automatically when the user does work through you\n- When sessions end, context blocks are generated and stored for future reference\n- When working on a task, check for relevant documents/templates in the knowledge base first\n- Respect permissions: members only see colleagues in their own teams, admins see everyone\n- All CRUD operations are available via MCP — users never need to visit the dashboard\n", "tools": [ { "description": "Accept a pending organization invite by organization name.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "org_name": { "description": "Organization name to accept the invite for", "type": "string" } }, "required": [ "org_name" ], "title": "AcceptOrgInviteParams", "type": "object" }, "name": "accept_org_invite", "outputSchema": null }, { "description": "Add a dependency between tasks. Use this to express that a task is blocked by another task (must complete first) or relates to it. This prevents context contamination: when Task B depends on Task A, agents working on Task B will be warned if Task A is still in progress.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "dependency_type": { "description": "Dependency type: 'blocks' (must complete before) or 'relates_to' (informational link). Default: blocks", "type": [ "string", "null" ] }, "depends_on_task_id": { "description": "The task that blocks (the dependency / prerequisite)", "type": "string" }, "task_id": { "description": "The task that is blocked (depends on the other task)", "type": "string" } }, "required": [ "task_id", "depends_on_task_id" ], "title": "AddTaskDependencyParams", "type": "object" }, "name": "add_task_dependency", "outputSchema": null }, { "description": "Add a member to a team. Find the team by name or ID, and the user by name or email.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "role": { "description": "Role in team: member or lead (default: member)", "type": [ "string", "null" ] }, "team_id": { "description": "Team ID (optional if team_name is provided)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name (optional if team_id is provided)", "type": [ "string", "null" ] }, "user": { "description": "User name or email to add", "type": "string" } }, "required": [ "user" ], "title": "AddTeamMemberParams", "type": "object" }, "name": "add_team_member", "outputSchema": null }, { "description": "Assign a user to a task by name or email. The user is added to the task's assignees and linked in the knowledge graph.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "task_id": { "description": "Task ID", "type": "string" }, "user": { "description": "User name or email to assign", "type": "string" } }, "required": [ "task_id", "user" ], "title": "AssignTaskParams", "type": "object" }, "name": "assign_task", "outputSchema": null }, { "description": "Create a new job position/title in your organization (admin only).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "description": { "description": "Position description (optional)", "type": [ "string", "null" ] }, "permissions": { "description": "JSON object mapping permission keys to booleans, e.g. {\"can_view_all_projects\": true, \"can_manage_documents\": false}. Use list_positions to see all available permission keys." }, "title": { "description": "Position title (e.g. 'Frontend Developer')", "type": "string" } }, "required": [ "title" ], "title": "CreatePositionParams", "type": "object" }, "name": "create_position", "outputSchema": null }, { "description": "Create a new project in your organization. You will be added as the project owner.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "description": { "description": "Project description (optional)", "type": [ "string", "null" ] }, "name": { "description": "Project name", "type": "string" } }, "required": [ "name" ], "title": "CreateProjectParams", "type": "object" }, "name": "create_project", "outputSchema": null }, { "description": "Create a new sprint for a project. Automatically migrates non-completed tasks (todo/in_progress) from the previous sprint. On first use, creates Sprint 0 (Backlog) for existing tasks and Sprint 1 as the active sprint.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "goal": { "description": "Sprint goal (optional)", "type": [ "string", "null" ] }, "name": { "description": "Sprint name (default: 'Sprint N')", "type": [ "string", "null" ] }, "project_id": { "description": "Project ID (alternative to project_name)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name", "type": [ "string", "null" ] } }, "title": "CreateSprintParams", "type": "object" }, "name": "create_sprint", "outputSchema": null }, { "description": "Create a new task in a project. Tasks track work items and can be assigned to team members and linked to sessions.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "assignees": { "description": "Assignee names or emails (optional — resolves to user IDs)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "depends_on": { "description": "Task IDs that this task depends on / is blocked by (optional). Creates 'blocks' dependencies.", "items": { "type": "string" }, "type": [ "array", "null" ] }, "description": { "description": "Task description (optional)", "type": [ "string", "null" ] }, "due_at": { "description": "Due date in ISO 8601 format (e.g. '2026-03-15T00:00:00Z')", "type": [ "string", "null" ] }, "priority": { "description": "Priority: low, medium, high, urgent (default: medium)", "type": [ "string", "null" ] }, "project_id": { "description": "Project ID (alternative to project_name)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name to create the task in", "type": [ "string", "null" ] }, "sprint_number": { "description": "Sprint number to assign the task to (optional — auto-assigns to current sprint if omitted)", "format": "int32", "type": [ "integer", "null" ] }, "tags": { "description": "Tags for categorization (e.g. ['bug', 'frontend'])", "items": { "type": "string" }, "type": [ "array", "null" ] }, "team_id": { "description": "Team ID (alternative to team_name)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name to assign to (optional — resolves to team ID)", "type": [ "string", "null" ] }, "title": { "description": "Task title", "type": "string" } }, "required": [ "title" ], "title": "CreateTaskParams", "type": "object" }, "name": "create_task", "outputSchema": null }, { "description": "Create a new team in your organization. You will be added as team lead.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "description": { "description": "Team description (optional)", "type": [ "string", "null" ] }, "name": { "description": "Team name", "type": "string" }, "objectives": { "description": "Team objectives as a list of strings (optional)", "items": { "type": "string" }, "type": [ "array", "null" ] } }, "required": [ "name" ], "title": "CreateTeamParams", "type": "object" }, "name": "create_team", "outputSchema": null }, { "description": "Delete a document from the knowledge base. This permanently removes the document.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "document_id": { "description": "Document ID to delete", "type": "string" } }, "required": [ "document_id" ], "title": "DeleteDocumentParams", "type": "object" }, "name": "delete_document", "outputSchema": null }, { "description": "Delete a position permanently (admin only). Find by title or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "position_id": { "description": "Position ID (optional if position_title is provided)", "type": [ "string", "null" ] }, "position_title": { "description": "Position title (optional if position_id is provided)", "type": [ "string", "null" ] } }, "title": "DeletePositionParams", "type": "object" }, "name": "delete_position", "outputSchema": null }, { "description": "Delete a project permanently (admin only). Find by name or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_id": { "description": "Project ID (optional if project_name is provided)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional if project_id is provided)", "type": [ "string", "null" ] } }, "title": "DeleteProjectParams", "type": "object" }, "name": "delete_project", "outputSchema": null }, { "description": "Delete a task permanently. The task and all its assignee links are removed.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "task_id": { "description": "Task ID to delete", "type": "string" } }, "required": [ "task_id" ], "title": "DeleteTaskParams", "type": "object" }, "name": "delete_task", "outputSchema": null }, { "description": "Delete a team permanently (admin only). Find by name or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "team_id": { "description": "Team ID (optional if team_name is provided)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name (optional if team_id is provided)", "type": [ "string", "null" ] } }, "title": "DeleteTeamParams", "type": "object" }, "name": "delete_team", "outputSchema": null }, { "description": "Delete (soft-delete) a user from your organization (admin/owner only).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "user": { "description": "User name or email to delete", "type": "string" } }, "required": [ "user" ], "title": "DeleteUserParams", "type": "object" }, "name": "delete_user", "outputSchema": null }, { "description": "End a work session. This triggers context block generation — your activities are summarized and stored in the knowledge graph for future reference.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "outcome": { "description": "Outcome: success, failure, partial, abandoned", "type": "string" }, "session_id": { "description": "Session ID to end", "type": "string" }, "token_usage": { "description": "Token usage for this session. JSON object with fields: input_tokens (int), output_tokens (int), total_tokens (int), model (string), estimated_cost_usd (float). Optional — set when the agent can report consumption." } }, "required": [ "session_id", "outcome" ], "title": "EndSessionParams", "type": "object" }, "name": "end_session", "outputSchema": null }, { "description": "Search documents in the organization's knowledge base. Filter by category, tags, project, or free-text query. Returns document metadata — use get_document to read the full content.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "category": { "description": "Filter by category: template, policy, procedure, reference, contract, guide, checklist", "type": [ "string", "null" ] }, "limit": { "description": "Maximum results (default 10)", "format": "int32", "type": [ "integer", "null" ] }, "project_name": { "description": "Filter by project name", "type": [ "string", "null" ] }, "query": { "description": "Search query (matches title and content)", "type": [ "string", "null" ] }, "tags": { "description": "Filter by tags", "items": { "type": "string" }, "type": [ "array", "null" ] }, "team_name": { "description": "Filter by team name", "type": [ "string", "null" ] } }, "title": "FindDocumentsParams", "type": "object" }, "name": "find_documents", "outputSchema": null }, { "description": "Get intelligent context from the knowledge graph. Pass a query describing what you need — the system will automatically route to the right data sources (tasks, sessions, documents, teams, blocks) based on intent analysis + graph traversal + semantic similarity. Optionally narrow scope with project name or session ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "max_tokens": { "description": "Maximum tokens for the response (default 500)", "format": "int32", "type": [ "integer", "null" ] }, "project_id": { "description": "Project ID (optional — if omitted, returns across all projects)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional, alternative to project_id)", "type": [ "string", "null" ] }, "query": { "description": "The user's question or intent — used for intelligent context routing. Describe what context is needed.", "type": "string" }, "session_id": { "description": "Session ID (optional — if omitted, returns user-level context)", "type": [ "string", "null" ] } }, "required": [ "query" ], "title": "GetContextParams", "type": "object" }, "name": "get_context", "outputSchema": null }, { "description": "Get the current context routing mode for the organization. Returns 'keyword_llm', 'keyword_only', or 'llm_only'.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "GetContextRoutingParams", "type": "object" }, "name": "get_context_routing", "outputSchema": null }, { "description": "Get the full content of a document by its ID. Use find_documents first to search, then get_document to read the content. For binary documents (PDFs, images), content is returned base64-encoded with encoding='base64' and the mime_type field.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "document_id": { "description": "Document ID", "type": "string" } }, "required": [ "document_id" ], "title": "GetDocumentParams", "type": "object" }, "name": "get_document", "outputSchema": null }, { "description": "See what's happening right now: active sessions, recent events, traces, and tasks being worked on.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_name": { "description": "Filter by project name (optional)", "type": [ "string", "null" ] }, "recent_minutes": { "description": "Time window for recent events in minutes (default: 30)", "format": "int32", "type": [ "integer", "null" ] }, "team_name": { "description": "Filter by team name (optional)", "type": [ "string", "null" ] }, "user_name": { "description": "Filter by user name (optional, partial match)", "type": [ "string", "null" ] } }, "title": "GetLiveActivityParams", "type": "object" }, "name": "get_live_activity", "outputSchema": null }, { "description": "Get your personal activity statistics: total sessions, events, active days, projects worked on, and recent activity summary.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "EmptyParams", "type": "object" }, "name": "get_my_stats", "outputSchema": null }, { "description": "Get comprehensive organization statistics: counts, engagement metrics, task velocity.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "GetOrgStatsParams", "type": "object" }, "name": "get_org_stats", "outputSchema": null }, { "description": "Get the current status of a project including recent activity. You can use either the project name or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_id": { "description": "Project ID (optional if project_name is provided)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional, alternative to project_id)", "type": [ "string", "null" ] } }, "title": "GetProjectStatusParams", "type": "object" }, "name": "get_project_status", "outputSchema": null }, { "description": "Get full details of a session including all events/activities logged during it. Shows who did what, when, and the session block summary if available. Admins can view any session in the org; members can only view their own.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "session_id": { "description": "Session ID to get details for", "type": "string" } }, "required": [ "session_id" ], "title": "GetSessionDetailsParams", "type": "object" }, "name": "get_session_details", "outputSchema": null }, { "description": "Get detailed information about a team: members (with roles), linked projects, and recent activity. Use team name or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "team_id": { "description": "Team ID (optional if team_name is provided)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name (optional if team_id is provided)", "type": [ "string", "null" ] } }, "title": "GetTeamDetailsParams", "type": "object" }, "name": "get_team_details", "outputSchema": null }, { "description": "Invite a new member to your organization (admin/owner only).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "email": { "description": "User email address", "type": "string" }, "name": { "description": "Full name", "type": "string" }, "positions": { "description": "Position titles to assign (optional — resolves by name)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "role": { "description": "Role: member or admin (default: member)", "type": [ "string", "null" ] }, "skills": { "description": "Skills list (optional)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "team_name": { "description": "Team name to add user to (optional)", "type": [ "string", "null" ] } }, "required": [ "email", "name" ], "title": "InviteUserParams", "type": "object" }, "name": "invite_user", "outputSchema": null }, { "description": "Link a work session to a task. This records that the session was used to work on the task, connecting them in the knowledge graph.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "session_id": { "description": "Session ID to link to the task", "type": "string" }, "task_id": { "description": "Task ID to link", "type": "string" } }, "required": [ "task_id", "session_id" ], "title": "LinkTaskSessionParams", "type": "object" }, "name": "link_task_session", "outputSchema": null }, { "description": "Link a project to a team. Find both by name or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_id": { "description": "Project ID (optional if project_name is provided)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional if project_id is provided)", "type": [ "string", "null" ] }, "team_id": { "description": "Team ID (optional if team_name is provided)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name (optional if team_id is provided)", "type": [ "string", "null" ] } }, "title": "LinkTeamProjectParams", "type": "object" }, "name": "link_team_project", "outputSchema": null }, { "description": "List colleagues in your organization. Shows name, email, role, and optionally filters by team. Admins see all users; members see users in their own teams.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "limit": { "description": "Maximum results (default 20)", "format": "int32", "type": [ "integer", "null" ] }, "team_name": { "description": "Filter by team name (optional — shows only members of that team)", "type": [ "string", "null" ] } }, "title": "ListColleaguesParams", "type": "object" }, "name": "list_colleagues", "outputSchema": null }, { "description": "List your notifications — task assignments, status changes, sprint updates, invites, and more. Returns unread notifications by default.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "limit": { "description": "Maximum results (default 20)", "format": "int32", "type": [ "integer", "null" ] }, "unread_only": { "description": "Only return unread notifications (default: true)", "type": [ "boolean", "null" ] } }, "title": "ListNotificationsParams", "type": "object" }, "name": "list_notifications", "outputSchema": null }, { "description": "List pending organization invites for the current user.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "ListPendingInvitesParams", "type": "object" }, "name": "list_pending_invites", "outputSchema": null }, { "description": "List all job positions/titles in your organization with member counts.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "ListPositionsParams", "type": "object" }, "name": "list_positions", "outputSchema": null }, { "description": "List all members involved in a project. Includes users who have sessions in the project and users from teams linked to the project.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_id": { "description": "Project ID", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (alternative to project_id)", "type": [ "string", "null" ] } }, "title": "ListProjectMembersParams", "type": "object" }, "name": "list_project_members", "outputSchema": null }, { "description": "List teams linked to a project.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_id": { "description": "Project ID", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (alternative to project_id)", "type": [ "string", "null" ] } }, "title": "ListProjectTeamsParams", "type": "object" }, "name": "list_project_teams", "outputSchema": null }, { "description": "List projects in your organization. No parameters needed — just call it to see all your projects.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "org_id": { "description": "Optional organization ID (uses default org if omitted)", "type": [ "string", "null" ] } }, "title": "ListProjectsParams", "type": "object" }, "name": "list_projects", "outputSchema": null }, { "description": "List your recent work sessions. Optionally filter by project name or ID. Shows task type, status, and event count.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "limit": { "description": "Maximum results (default 10)", "format": "int32", "type": [ "integer", "null" ] }, "project_id": { "description": "Filter by project ID (optional)", "type": [ "string", "null" ] }, "project_name": { "description": "Filter by project name (optional, alternative to project_id)", "type": [ "string", "null" ] } }, "title": "ListSessionsParams", "type": "object" }, "name": "list_sessions", "outputSchema": null }, { "description": "List sprints for a project. Shows sprint number, name, goal, status (current/completed), and task count.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_id": { "description": "Project ID (alternative to project_name)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name", "type": [ "string", "null" ] } }, "title": "ListSprintsParams", "type": "object" }, "name": "list_sprints", "outputSchema": null }, { "description": "List tasks. Filter by project, status (todo/in_progress/done/cancelled), sprint number, or show only your tasks. Shows title, status, priority, assignees, sprint, and linked sessions.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "limit": { "description": "Maximum results (default 20)", "format": "int32", "type": [ "integer", "null" ] }, "mine_only": { "description": "Filter tasks assigned to me only (default: false)", "type": [ "boolean", "null" ] }, "project_name": { "description": "Filter by project name (optional)", "type": [ "string", "null" ] }, "sprint_number": { "description": "Filter by sprint number (optional)", "format": "int32", "type": [ "integer", "null" ] }, "status": { "description": "Filter by status: todo, in_progress, done, cancelled (optional)", "type": [ "string", "null" ] } }, "title": "ListTasksParams", "type": "object" }, "name": "list_tasks", "outputSchema": null }, { "description": "List all teams in your organization. Shows team name, member count, project count, and description.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "EmptyParams", "type": "object" }, "name": "list_teams", "outputSchema": null }, { "description": "Log an activity or event. If no session_id is provided, a session is automatically created or reused for the project. Just pass project_name and content — no need to start a session first.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "content": { "description": "Free-form content describing the activity", "type": "string" }, "event_type": { "description": "Event type: code_change, file_edit, command_run, decision, note, conversation, discovery", "type": "string" }, "project_id": { "description": "Project ID (optional if project_name is provided)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional, alternative to project_id — used for auto-session)", "type": [ "string", "null" ] }, "session_id": { "description": "Session ID (optional — if omitted, a session is auto-created or reused for the project)", "type": [ "string", "null" ] }, "source": { "description": "Source of the event (e.g. 'claude-code', 'cursor', 'user')", "type": [ "string", "null" ] } }, "required": [ "event_type", "content" ], "title": "LogActivityParams", "type": "object" }, "name": "log_activity", "outputSchema": null }, { "description": "Log a granular agent action trace. High-frequency, no LLM processing.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "duration_ms": { "description": "Duration in milliseconds (optional)", "format": "int32", "type": [ "integer", "null" ] }, "metadata": { "description": "Free-form JSON metadata (optional)" }, "parent_trace_id": { "description": "Parent trace ID for nesting (e.g. tool_call -> file_reads)", "type": [ "string", "null" ] }, "project_id": { "description": "Project ID (optional, alternative to project_name)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional, used for auto-session resolution)", "type": [ "string", "null" ] }, "session_id": { "description": "Session ID (optional — auto-resolved from project if omitted)", "type": [ "string", "null" ] }, "status": { "description": "Status: started, completed, failed (default: completed)", "type": [ "string", "null" ] }, "summary": { "description": "Short description of the action", "type": "string" }, "task_id": { "description": "Task ID to link this trace to (optional — auto-links session to task)", "type": [ "string", "null" ] }, "trace_id": { "description": "Logical trace group ID (auto-generated if omitted)", "type": [ "string", "null" ] }, "trace_type": { "description": "Trace type: tool_call, file_read, file_write, code_search, code_edit, api_call, thinking, error", "type": "string" } }, "required": [ "trace_type", "summary" ], "title": "LogTraceParams", "type": "object" }, "name": "log_trace", "outputSchema": null }, { "description": "Log multiple traces in a single batch.", "inputSchema": { "$defs": { "LogTraceParams": { "properties": { "duration_ms": { "description": "Duration in milliseconds (optional)", "format": "int32", "type": [ "integer", "null" ] }, "metadata": { "description": "Free-form JSON metadata (optional)" }, "parent_trace_id": { "description": "Parent trace ID for nesting (e.g. tool_call -> file_reads)", "type": [ "string", "null" ] }, "project_id": { "description": "Project ID (optional, alternative to project_name)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional, used for auto-session resolution)", "type": [ "string", "null" ] }, "session_id": { "description": "Session ID (optional — auto-resolved from project if omitted)", "type": [ "string", "null" ] }, "status": { "description": "Status: started, completed, failed (default: completed)", "type": [ "string", "null" ] }, "summary": { "description": "Short description of the action", "type": "string" }, "task_id": { "description": "Task ID to link this trace to (optional — auto-links session to task)", "type": [ "string", "null" ] }, "trace_id": { "description": "Logical trace group ID (auto-generated if omitted)", "type": [ "string", "null" ] }, "trace_type": { "description": "Trace type: tool_call, file_read, file_write, code_search, code_edit, api_call, thinking, error", "type": "string" } }, "required": [ "trace_type", "summary" ], "type": "object" } }, "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "traces": { "description": "Array of traces to log in a single batch", "items": { "$ref": "#/$defs/LogTraceParams" }, "type": "array" } }, "required": [ "traces" ], "title": "LogTracesBatchParams", "type": "object" }, "name": "log_traces_batch", "outputSchema": null }, { "description": "Mark a notification as read, or mark all notifications as read at once.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "mark_all": { "description": "Set to true to mark ALL notifications as read", "type": [ "boolean", "null" ] }, "notification_id": { "description": "Notification ID to mark as read (omit to use mark_all)", "type": [ "string", "null" ] } }, "title": "MarkNotificationReadParams", "type": "object" }, "name": "mark_notification_read", "outputSchema": null }, { "description": "Move a task to a different sprint. Specify the target sprint by number or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_name": { "description": "Project name (needed if using sprint_number)", "type": [ "string", "null" ] }, "sprint_id": { "description": "Target sprint ID (alternative to sprint_number)", "type": [ "string", "null" ] }, "sprint_number": { "description": "Target sprint number", "format": "int32", "type": [ "integer", "null" ] }, "task_id": { "description": "Task ID to move", "type": "string" } }, "required": [ "task_id" ], "title": "MoveTaskToSprintParams", "type": "object" }, "name": "move_task_to_sprint", "outputSchema": null }, { "description": "Remove a dependency between tasks. This unblocks the task from the other task.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "depends_on_task_id": { "description": "The task that was blocking it", "type": "string" }, "task_id": { "description": "The task that was blocked", "type": "string" } }, "required": [ "task_id", "depends_on_task_id" ], "title": "RemoveTaskDependencyParams", "type": "object" }, "name": "remove_task_dependency", "outputSchema": null }, { "description": "Remove a member from a team. Find the team by name or ID, and the user by name or email.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "team_id": { "description": "Team ID (optional if team_name is provided)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name (optional if team_id is provided)", "type": [ "string", "null" ] }, "user": { "description": "User name or email to remove", "type": "string" } }, "required": [ "user" ], "title": "RemoveTeamMemberParams", "type": "object" }, "name": "remove_team_member", "outputSchema": null }, { "description": "Remove a user from the current organization without deleting their account. Admin/owner only.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "user": { "description": "User name or email to remove from the organization", "type": "string" } }, "required": [ "user" ], "title": "RemoveUserFromOrgParams", "type": "object" }, "name": "remove_user_from_org", "outputSchema": null }, { "description": "Search entities in the knowledge graph by name. Finds people, companies, documents, concepts, tools, etc. that have been mentioned in your activities.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "entity_type": { "description": "Entity type filter: person, company, document, concept, tool, template, process", "type": [ "string", "null" ] }, "limit": { "description": "Maximum results (default 10)", "format": "int32", "type": [ "integer", "null" ] }, "query": { "description": "Search query string (matches entity names)", "type": "string" } }, "required": [ "query" ], "title": "SearchEntitiesParams", "type": "object" }, "name": "search_entities", "outputSchema": null }, { "description": "Set the context routing mode for the organization. Requires admin role. Options: 'keyword_llm' (balanced), 'keyword_only' (fastest), 'llm_only' (most accurate).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "mode": { "description": "Routing mode: 'keyword_llm' (keyword + LLM fallback), 'keyword_only' (fastest), or 'llm_only' (most accurate)", "type": "string" } }, "required": [ "mode" ], "title": "SetContextRoutingParams", "type": "object" }, "name": "set_context_routing", "outputSchema": null }, { "description": "Set up your organization in one step (admin only). Use this for onboarding.", "inputSchema": { "$defs": { "SetupLink": { "properties": { "description": { "type": [ "string", "null" ] }, "label": { "type": "string" }, "type": { "description": "Link type: website, repository, documentation, slack, jira, notion, figma, other", "type": "string" }, "url": { "type": "string" } }, "required": [ "label", "url", "type" ], "type": "object" }, "SetupProject": { "properties": { "description": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name", "description" ], "type": "object" }, "SetupTeam": { "properties": { "description": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name", "description" ], "type": "object" } }, "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "business_model": { "description": "Business model description", "type": "string" }, "custom_context": { "description": "Custom context for AI agents (optional)", "type": [ "string", "null" ] }, "description": { "description": "Organization description", "type": "string" }, "links": { "description": "Links: [{\"label\": \"...\", \"url\": \"...\", \"type\": \"website|repository|documentation|slack|jira|notion|figma|other\"}]", "items": { "$ref": "#/$defs/SetupLink" }, "type": [ "array", "null" ] }, "objectives": { "description": "Organization objectives", "items": { "type": "string" }, "type": "array" }, "projects": { "description": "Projects to create: [{\"name\": \"...\", \"description\": \"...\"}]", "items": { "$ref": "#/$defs/SetupProject" }, "type": [ "array", "null" ] }, "teams": { "description": "Teams to create: [{\"name\": \"...\", \"description\": \"...\"}]", "items": { "$ref": "#/$defs/SetupTeam" }, "type": [ "array", "null" ] } }, "required": [ "description", "business_model", "objectives" ], "title": "SetupOrganizationParams", "type": "object" }, "name": "setup_organization", "outputSchema": null }, { "description": "Start a work session. If a project is provided (project_name or project_id), the session is bound to it; if neither is provided, an unbound (projectless) session is created — useful when the work isn't tied to a specific project. Reuses an existing active session for the same scope (per-project, or one global projectless session per user). Task type: coding, review, planning, debugging, research, meeting, other.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_id": { "description": "Project ID to start the session in (optional if project_name provided)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional, alternative to project_id)", "type": [ "string", "null" ] }, "source": { "description": "Source client identifier (e.g. 'claude-code', 'claude-web', 'chatgpt', 'cursor'). Helps track which tool created the session.", "type": [ "string", "null" ] }, "task_type": { "description": "Type of task: coding, review, planning, debugging, research, meeting, other", "type": "string" } }, "required": [ "task_type" ], "title": "StartSessionParams", "type": "object" }, "name": "start_session", "outputSchema": null }, { "description": "Remove a user from a task's assignees.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "task_id": { "description": "Task ID", "type": "string" }, "user_id": { "description": "User ID to remove from assignees", "type": "string" } }, "required": [ "task_id", "user_id" ], "title": "UnassignTaskParams", "type": "object" }, "name": "unassign_task", "outputSchema": null }, { "description": "Unlink a project from a team. Find both by name or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "project_id": { "description": "Project ID (optional if project_name is provided)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name (optional if project_id is provided)", "type": [ "string", "null" ] }, "team_id": { "description": "Team ID (optional if team_name is provided)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name (optional if team_id is provided)", "type": [ "string", "null" ] } }, "title": "LinkTeamProjectParams", "type": "object" }, "name": "unlink_team_project", "outputSchema": null }, { "description": "Update your organization's details (owner only). Set name, description, business model, objectives, custom context for AI, or links.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "business_model": { "description": "Business model description (optional)", "type": [ "string", "null" ] }, "custom_context": { "description": "Custom context for AI agents (optional)", "type": [ "string", "null" ] }, "description": { "description": "Organization description (optional)", "type": [ "string", "null" ] }, "links": { "description": "Links as JSON array: [{\"label\": \"...\", \"url\": \"...\", \"type\": \"...\"}] (optional)" }, "name": { "description": "Organization name (optional)", "type": [ "string", "null" ] }, "objectives": { "description": "Objectives as a list of strings (optional)", "items": { "type": "string" }, "type": [ "array", "null" ] } }, "title": "UpdateOrgParams", "type": "object" }, "name": "update_org", "outputSchema": null }, { "description": "Update a position's title, description, or permissions (admin only). Find by title or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "new_description": { "description": "New description (optional)", "type": [ "string", "null" ] }, "new_permissions": { "description": "New permissions JSON object mapping permission keys to booleans, e.g. {\"can_view_all_projects\": true}. Use list_positions to see all available keys." }, "new_title": { "description": "New title (optional)", "type": [ "string", "null" ] }, "position_id": { "description": "Position ID (optional if position_title is provided)", "type": [ "string", "null" ] }, "position_title": { "description": "Position title to find (optional if position_id is provided)", "type": [ "string", "null" ] } }, "title": "UpdatePositionParams", "type": "object" }, "name": "update_position", "outputSchema": null }, { "description": "Update a project's name, description, or links. Find by name or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "links": { "description": "Links as JSON array: [{\"label\": \"...\", \"url\": \"...\", \"type\": \"...\"}] (optional)" }, "new_description": { "description": "New description (optional)", "type": [ "string", "null" ] }, "new_name": { "description": "New name (optional)", "type": [ "string", "null" ] }, "project_id": { "description": "Project ID (optional if project_name is provided)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name to find (optional if project_id is provided)", "type": [ "string", "null" ] } }, "title": "UpdateProjectParams", "type": "object" }, "name": "update_project", "outputSchema": null }, { "description": "Update a task's status, title, description, priority, or team assignment. Use this to move tasks through the workflow (todo -> in_progress -> done) or reassign to a team.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "description": { "description": "New description", "type": [ "string", "null" ] }, "due_at": { "description": "Due date in ISO 8601 format (e.g. '2026-03-15T00:00:00Z'), or null to clear", "type": [ "string", "null" ] }, "priority": { "description": "New priority: low, medium, high, urgent", "type": [ "string", "null" ] }, "status": { "description": "New status: todo, in_progress, done, cancelled", "type": [ "string", "null" ] }, "tags": { "description": "New tags (replaces existing tags)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "task_id": { "description": "Task ID to update", "type": "string" }, "team_id": { "description": "Team ID to assign (optional)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name to assign (optional, alternative to team_id)", "type": [ "string", "null" ] }, "title": { "description": "New title", "type": [ "string", "null" ] } }, "required": [ "task_id" ], "title": "UpdateTaskParams", "type": "object" }, "name": "update_task", "outputSchema": null }, { "description": "Update a team's name, description, or objectives. Find by name or ID.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "new_description": { "description": "New description (optional)", "type": [ "string", "null" ] }, "new_name": { "description": "New name (optional)", "type": [ "string", "null" ] }, "new_objectives": { "description": "New objectives (optional)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "team_id": { "description": "Team ID (optional if team_name is provided)", "type": [ "string", "null" ] }, "team_name": { "description": "Team name to find (optional if team_id is provided)", "type": [ "string", "null" ] } }, "title": "UpdateTeamParams", "type": "object" }, "name": "update_team", "outputSchema": null }, { "description": "Update an existing user's name, role, positions, or skills (admin/owner only).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "new_name": { "description": "New name (optional)", "type": [ "string", "null" ] }, "new_role": { "description": "New role: member or admin (optional)", "type": [ "string", "null" ] }, "positions": { "description": "Position titles to assign (optional — replaces existing)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "skills": { "description": "Skills list (optional — replaces existing)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "user": { "description": "User name or email to find", "type": "string" } }, "required": [ "user" ], "title": "UpdateUserParams", "type": "object" }, "name": "update_user", "outputSchema": null }, { "description": "Upload a document to the organization's knowledge base. Documents can be templates, policies, contracts, procedures, guides, or references. They are indexed in the knowledge graph and automatically surfaced as context when relevant to a task. Supports both text and binary files: for binary files (PDFs, images, etc.), set is_base64=true and provide the content as a base64-encoded string, along with the appropriate mime_type (e.g. 'application/pdf', 'image/png'). Optionally set file_name for the original filename. Embeddings are generated automatically for search.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "category": { "description": "Category: template, policy, procedure, reference, contract, guide, checklist, other", "type": "string" }, "content": { "description": "Full document content (text/markdown)", "type": "string" }, "file_name": { "description": "Original file name (e.g. 'contract.pdf'). Optional.", "type": [ "string", "null" ] }, "is_base64": { "description": "Set to true if content is base64-encoded (for binary files like PDFs, images)", "type": [ "boolean", "null" ] }, "mime_type": { "description": "MIME type of the content (default: text/plain). Use application/pdf, image/png, etc. for binary files.", "type": [ "string", "null" ] }, "project_id": { "description": "Project ID to associate with (optional, alternative to project_name)", "type": [ "string", "null" ] }, "project_name": { "description": "Project name to associate with (optional)", "type": [ "string", "null" ] }, "tags": { "description": "Tags for categorization and search (e.g. ['tax', 'contract', 'template'])", "items": { "type": "string" }, "type": [ "array", "null" ] }, "team_ids": { "description": "Team IDs to associate with (optional, alternative to team_names)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "team_names": { "description": "Team names to associate the document with (optional, for team-level access control)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "title": { "description": "Document title", "type": "string" } }, "required": [ "title", "category", "content" ], "title": "UploadDocumentParams", "type": "object" }, "name": "upload_document", "outputSchema": null }, { "description": "Get your profile, organization, projects, recent sessions, and top entities. This is the best starting point — call this first to understand what's available. No parameters needed.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "EmptyParams", "type": "object" }, "name": "whoami", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:86acb3324d6673da0765222d1b16d445b8ca03aefa4151fd7e409a015384482c | sha256sum