Skip to content

Tool Reference

Ask about this page ChatGPT Gemini Claude

Every tool the Halyard MCP server exposes, grouped by job. Parameters list required/optional and default/enum. Enum-valued parameters link to Enums & filters. All calls run as the authorized user, scoped to their organization — see MCP server.

ToolPurposeParametersReturns
whoamiIdentify the current user, org, and connections.(none)user (id, email, name, accessRole, roles, isAdmin), organization (id, name, slug, billingPlan, memberCount), connections (channels, integrations, linked_accounts), authenticated_via
find_organizationsFind organizations / companies by name.query (opt)matching organizations
get_user_profileRead a teammate’s profile and recent activity.user_id (opt — defaults to caller), since (opt — since)profile entry, recent activity
update_user_profileUpdate the caller’s profile entry and/or routing controls.content (opt), sections (opt), availability (opt: ONLINE / AWAY / DND), routable (opt) — at least oneupdated profile and/or the new availability / routable

whoami takes no arguments — it reads identity from the bearer token. Call it first when an agent needs to orient before filtering by me or saving work.

ToolPurposeParametersReturns
ask_expertAsk a teammate; auto-answers from the knowledge base first, routes to a human on a miss. A human reply is evidence for a normal cited synthesis, not final copy to forward.prompt (req), role (opt — role), skill (opt — skill), force_human (opt), options (opt — {label, value} response choices), conversation_id (opt)discriminated union: resolved-from-KB answer, or human conversation (conversation_id, status)
list_teamList teammates with roles, skills, and availability.role (opt — role), skill (opt — skill), available_only (opt)members (id, name, roles, skills, availability), match_type
check_responseCheck whether the teammate replied; can block briefly. On success, search relevant knowledge and synthesize an answer that attributes the teammate’s response.conversation_id (req), wait (opt — blocks ≤55s)teammate reply as evidence with attribution if any, status
reply_to_expertSend a follow-up in an open conversation and wait only for a newer teammate reply. Apply the same search, synthesis, attribution, and conflict rules as check_response.conversation_id (req), message (req)new teammate reply as evidence with attribution when received; otherwise waiting status
get_conversationRead the full conversation history.conversation_id (req)messages, status, participants
close_conversationClose a conversation without saving knowledge.conversation_id (req)closed conversation
summarize_conversationSave a useful teammate answer as a knowledge entry.conversation_id (req), question (req), answer (req), source_url (opt), source_provider (opt)created knowledge entry (enters INBOX)

Search the knowledge base before calling ask_expert. Both ask_expert (wait) and check_response (wait) block at most 55s — see MCP server limits.

ToolPurposeParametersReturns
search_knowledgeSemantic/keyword search over written knowledge.query (req), type (opt — entry type), author (opt — author), since (opt — since), limit (opt, default 5), threshold (opt, default 0.55), mode (opt — search mode, default hybrid), target_type (opt), target_value (opt)entries (id, entry_type, title, content, tags, author, similarity, relation_count, is_superseded, event_count, last_activity_at), caller_profile
search_product_docsSearch Halyard’s own product documentation (this docs site).query (req), limit (opt, default 5), mode (opt — search mode, default hybrid)results (id, page, title, heading, url, content, score)
list_knowledgeBrowse a chronological mix of knowledge entries and work events.type (opt — entry type), eventType (opt — work-event type), repo (opt), kind (opt), author (opt — author), since (opt — since), until (opt), limit (opt, default 10), offset (opt), include_content (opt, default false)items (mixed kind:"knowledge" / kind:"event"), totals
explore_knowledgeTraverse the relation graph around one entry.entry_id (req), depth (opt, default 1), types (opt — relation type), format (opt, default list), include_content (opt)related entries, relations, activity (event_count, last_activity_at, events; list format only)
summarize_workSave completed work, a decision, or a process learning as knowledge.title (req), summary (req), entry_type (opt — entry type, default WORK_OUTPUT), tags (opt), session_id (opt), source_url (opt), source_provider (opt), source_knowledge_entry_id (opt), knowledge_entry_id (opt), supersedes_entry_id (opt)created entry (enters INBOX)
attach_artifactAttach a rendered artifact to a knowledge entry.knowledge_entry_id (req), format (req — HTML | CSV), content (req)updated entry
sync_skillUpload a skill (SKILL.md plus companion files, verbatim) you wrote or edited in this session. Same entry as halyard skills sync.scope (req — project | user), repo (req for project — github.com/owner/repo), relative_path (req — e.g. .claude/skills/my-skill), files (req — path, content, encoding opt utf8 | base64; one must be SKILL.md)status (created | updated | unchanged), knowledge_entry_id, stored_files, warnings
get_skillRead a synced skill back: its front-matter properties and file manifest, or one file verbatim.entry_id (req), path (opt — a file from the manifest)without path: skill (properties, properties_raw, files with store, skill_md with verbatim); with path: file (content, encoding)
list_work_streamsList the org’s work streams — the named pieces of work that repos, Linear projects, Slack channels and branches roll up to (resourcing and R&D attribution). Admin-declared; there is no create tool.status (opt — active (default), closed, all)streams (id, title, status, rd_classification, income_years, scope_count, updated_at), count
get_work_streamRead one work stream: its entry, R&D classification, income years, status and scope rules.work_stream_id (req)stream (entry, rd_classification, income_years, status, scopes with rule, value, weight, valid_from, valid_to)

Use search_knowledge for “what do we know?” and list_knowledge for “what changed recently?”. Work events are not semantically searchable (list_events query is keyword matching) — see Knowledge vs work events.

All triage tools key on triage_id. AI-generated entries land in the inbox with a 24h review window — see The inbox.

ToolPurposeParametersReturns
list_triageList pending inbox items.kind (opt — knowledge default or work_classification), state (opt, work classification only), filter (opt — all | mine | overdue; latter two knowledge only), limit (opt, default 20), offset (opt), include_content (opt, knowledge only)entries, total; classification entries include prefixed IDs and decision details
get_triage_itemInspect one triage item.triage_id (req)full triage item
suggest_triage_editsAsk Halyard to propose cleanup edits.triage_id (req), instruction (req)suggested edits (each with message_id)
apply_triage_suggestionApply a proposed edit.triage_id (req), message_id (req)updated item
apply_triage_classificationApply a classification to an inbox item.triage_id (req), classification (req — see below), reason, title, content, tags (opt, knowledge only)filed knowledge entry or audited work assignment
dismiss_triageDismiss knowledge or reject a stream proposal, preserving history.triage_id (req), reason (opt, knowledge only), work_stream_id (req for a work classification)archived knowledge entry or rejected stream proposal
delete_triage_itemDelete junk that should not remain.triage_id (req)deletion result

classification is one of:

  • {kind: "knowledge"} — file reviewed knowledge. Add entry_type: "DECISION", for example, to change its entry type.
  • {kind: "work_stream", work_stream_id: "stream-id"} — assign a work event.
  • {kind: "unmatched"} — explicitly record that no stream fits the work event.

Work decisions require a work-classification:<eventId> triage ID. Knowledge filing uses a knowledge entry ID. Missing or incompatible classifications fail without a write. apply_triage_classification replaces accept_triage; it records the supplied decision and does not run a classifier. Refresh cached tool discovery after deployment.

Non-admins see their own knowledge triage; admins see the org knowledge queue. Work classification reads follow event access, with decisions limited to the event actor or admin.

ToolPurposeParametersReturns
list_eventsBrowse raw work events (PRs, reviews, tasks, tickets, meetings).eventType (opt — work-event type), author (opt — author), repo (opt), query (opt — keyword/prefix match on titles and subject keys, not semantic), knowledge_entry_id (opt — only events on subjects that entry mentions or mirrors), since (opt — since), until (opt), limit (opt, default 20), offset (opt)events (id, event_type, subject_key, source_url, source_provider, actor, occurred_at, metadata, knowledge), total
get_delivery_metricsRead PR delivery dashboard metrics. Admin-only.month (opt), range (opt — 8w/3m/6m/12m trend window; 6m/12m bucket monthly)delivery metrics

Use events for activity questions. Do not expect semantic search results from raw event history.

ToolPurposeParametersReturns
search_peopleSearch known people and contacts.query (req), limit (opt, default 10)matching people
upsert_personCreate or update a person record.email (req), displayName (opt), firstName (opt), lastName (opt), title (opt), companyName (opt), tags (opt), linkedinUrl (opt), phone (opt), timezone (opt)person (CONTACT entry)
find_person_by_emailLook up a person by email.email (req)matched person or none
ToolPurposeParametersReturns
upsert_companyCreate or update a company record.name (req), domain (opt), logoUrl (opt), notes (opt)company (COMPANY entry)