Skip to content

Agent runtime — tool catalog

Agent runtime — tool catalog

All tools available to an agent running through the Meshi agent system. Organized into three groups:

  1. Runtime-native tools — built into meshi-agent-runtime, available on every call when MESHI_RUNTIME_BACKEND=local.
  2. Platform MCP tools — available via mcp_call_tool server=meshi-platform when the runtime is configured with MCP_CONFIG_JSON. Only relevant for local backend.
  3. AgentBackend tools — available only when MESHI_RUNTIME_BACKEND=agent (platform-native loop). These call @meshi/core in-process and are not exposed via the platform MCP server.

See agent-runtime-integration.md for how backend mode determines which tool groups are active.


Runtime-native tools

Registered in agent-runtime/src/gateway/index.ts.

Files (Tigris S3)

Agent-scoped storage. Paths are prefixed per-user server-side.

ToolDescription
file_readRead a file from the Tigris S3 bucket
file_writeWrite a file to the Tigris S3 bucket
file_listList files matching a prefix
file_deleteDelete a file

Web

ToolDescription
web_fetchFetch a webpage or make an HTTP request; returns rendered content
web_searchKeyword/semantic web search; driver selected by WEB_SEARCH_DEFAULT env (duckduckgo, jina, exa, google, bing)
web_parseParse structured content from a fetched HTML page (links, text, metadata)

Code execution (Vercel Sandbox)

Code runs in ephemeral Firecracker microVMs — no host filesystem access. Sandboxes are per-call and torn down in finally. See agent-runtime/docs/security-audit.md for sandbox isolation notes.

ToolDescription
code_executeExecute a JavaScript or TypeScript snippet; default 30 s timeout (max 300 s)
code_run_scriptRun a multi-line JS/TS script with stdin/stdout capture

Vector memory (Neon pgvector)

ToolDescription
vector_storeStore content with an embedding for later retrieval
memory_recallHybrid search (vector + keyword) against stored memories; returns ranked results
rag_queryRetrieve relevant context and format it as a prompt-ready string

Advanced RAG features (chunking strategies, multi-query, LLM reranking) are available via POST /api/rag/* on the runtime — see agent-runtime/src/api/advanced.ts.

Cron / scheduled tasks

Tasks are stored in the runtime’s Postgres schema and executed by the runtime’s cron subsystem.

ToolDescription
cron_scheduleSchedule a recurring or one-shot task. Accepts cron expression, @every 5m, or ISO timestamp
cron_listList all scheduled tasks with their status
cron_updateUpdate schedule or goal of an existing task
cron_pausePause a task (stops firing until resumed)
cron_resumeResume a paused task
cron_removeDelete a task permanently

MCP federation

Lets the agent call tools on any MCP server, including the Meshi platform server.

ToolDescription
mcp_call_toolCall a tool on a configured MCP server: { server, method, params }
mcp_add_serverRegister an additional MCP server at runtime (stdio or http)
mcp_remove_serverRemove a registered server and tear down its connection

The meshi-platform server is pre-configured via MCP_CONFIG_JSON. Do not add a static x-meshi-runtime-user-id header to the config — the runtime injects a fresh per-user JWT on every call.

Skills

Skills are git-cloned tool bundles that extend the agent’s capabilities at runtime.

ToolDescription
skill_installClone and install a skill from a git URL or local path
skill_executeRun a registered skill
skill_listList installed skills
skill_removeRemove a skill by name
skill_searchSearch installed skills by name substring or tag
skill_auditAudit a skill’s content against the high-risk pattern set (before execution)

Skills are installed as a shared resource (not per-user). Restrict skill_install to admin users in production — see agent-runtime/docs/security-audit.md MED-4.

Hooks

Hooks intercept events in the agent loop (pre/post tool execution, on message, etc.).

ToolDescription
hook_registerRegister a hook on a named event with a priority
hook_listList registered hooks
hook_unregisterRemove a hook by name
hook_testFire a synthetic event against a hook for testing

Composio (SaaS integrations)

Delegates to the Composio SDK for OAuth-managed SaaS tool execution. Covers Google Workspace, Microsoft 365, Slack, Linear, GitHub, and 200+ other apps.

ToolDescription
composioMultiplex entry point: operation ∈ {list, list_accounts, execute, connect}. Pass app, action_name, params, and entity_id.

entity_id maps to the authenticated user’s Composio identity — passed via the x-entity-id header from the platform or set explicitly by the caller.


Platform MCP tools

Available inside the agent loop via:

{ "tool": "mcp_call_tool", "server": "meshi-platform", "method": "tools/call",
"params": { "name": "<tool>", "arguments": { ... } } }

Registered in packages/mcp/src/server.ts. Each call is automatically scoped to the authenticated user (verified via x-meshi-runtime-user-id JWT — see agent-runtime-integration.md).

Profile

ToolDescription
get_profileCurrent user’s display name, role, company, confirmed traits, latest brief
get_briefCurrent user’s canonical brief (LLM-synthesized professional summary)
update_profileUpdate display name, current role, and/or current company

Contacts and connections

ToolDescription
import_contactsImport one or more contacts (name + email/linkedinUrl + arbitrary extra fields). Accepts a source label.
add_personAdd a single person to the user’s network (name + email or linkedinUrl required). Auto-enriches in the background.
remove_personSoft-delete a person from the user’s network (severs contact/connection edges; entity record preserved).
list_contactsList all contacts imported by the current user
list_connectionsList the current user’s LinkedIn connections with profile data and match tier
ToolDescription
search_peopleSemantic search across the user’s network using natural language. type ∈ {brief, traits}

Goals

ToolDescription
list_goalsList active goals (proposed + confirmed)
create_goalCreate a new goal (enters proposed state)
confirm_goalConfirm a proposed goal (makes it active for matchmaking)

Matchmaking

ToolDescription
run_matchFind matches for a specific goal (goalId) or across all confirmed goals if goalId is omitted. Returns scored candidates with profiles.
get_readinessPer-goal readiness stages (review → extraction → embedding → match), profile-level blockers, and a nextStep instruction to unblock matching. Use before run_match to diagnose why matching might fail.
discoverCombined overview: readiness status, goal landscape, and top matches across all confirmed goals in one call. Use as the starting point for a discovery conversation.

Contact detail

ToolDescription
get_contact_profileFull profile for a network contact: canonical brief, traits by dimension, career timeline
get_contact_evidenceRaw source evidence chunks for a contact’s traits (pass sourceRecordIds from trait evidence_refs)

Traits

ToolDescription
list_traitsCurrent user’s traits, optionally filtered by dimension (skill, values, experience, circles, personality, location)
assert_traitAssert a new confirmed trait for the current user
review_traitConfirm, reject, or edit a proposed trait claim

AgentBackend tools (MESHI_RUNTIME_BACKEND=agent only)

These tools are only available when the platform is running its native agentic loop (AgentBackend, activated by MESHI_RUNTIME_BACKEND=agent). They call @meshi/core service functions in-process and are not registered on the platform MCP server. Under local backend (the default deployment), none of these tools exist — the external runtime cannot reach them.

Source: packages/api/src/agent-backend.ts, AGENT_TOOLS array.

The AgentBackend loop runs up to 8 tool rounds, retries LLM calls up to 2 times on 5xx/network errors, and has a 120 s overall timeout.

Onboarding

ToolArgumentsDescription
get_onboarding_status(none)Return the current user’s onboarding state (status, phase, step, LinkedIn URL, goal count, and readiness). Call this first to understand what the user has set up.
start_onboardinglinkedinUrl: stringCreate the user’s entity and kick off LinkedIn enrichment. Sets state to processing/enrichment.
update_linkedin_urllinkedinUrl: stringReplace the LinkedIn URL and requeue enrichment. Accepts any non-completed state including action_required.
complete_onboarding(none)Mark onboarding as complete. Fires ONBOARDING_COMPLETED. Requires status=review + phase=goals_review and at least one confirmed goal — the same readiness gate as the HTTP route without force=true. The agent tool never passes force; use the HTTP POST /api/v0/onboarding/complete { force: true } for the conversational path where the readiness gate should be skipped.

Profile

ToolArgumentsDescription
get_profile(none)Display name, role, company, confirmed traits, latest brief.
get_brief(none)The user’s current canonical brief (LLM-synthesized professional summary).
update_profiledisplayName?, currentRole?, currentCompany?Update name, role, and/or company.

Contacts and connections

ToolArgumentsDescription
import_contactscontacts: [{name, email?, linkedinUrl?, role?, company?}], source?Bulk-import contacts.
list_contacts(none)All contacts imported by the current user.
list_connections(none)LinkedIn connections with profile data and match tier.
get_connections_progress(none)Enrichment pipeline progress: enriched / traits-inferred / goals-inferred / briefs-complete / match-ready counts.

Search

ToolArgumentsDescription
search_peoplequery: string, limit?: number, type?: 'brief'|'traits'Semantic search across the user’s network. Requires embedding provider configured (embed fn injected from composition root).

Goals

ToolArgumentsDescription
list_goals(none)Active goals (proposed + confirmed).
list_match_goals(none)Confirmed goals available for matchmaking.
create_goalvalue: stringCreate a new goal in proposed state.
confirm_goalgoalId: stringConfirm a proposed goal (activates it for matchmaking).

Matchmaking

ToolArgumentsDescription
run_matchgoalId: string (required), limit?: numberFind matches for a specific confirmed goal. Note: the Platform MCP run_match makes goalId optional (matches across all confirmed goals if omitted) — the AgentBackend tool requires it explicitly.

Traits

ToolArgumentsDescription
list_traitsdimension?: stringAll traits, optionally filtered by dimension.
assert_traitdimensionKey: enum, value: stringAssert a new confirmed trait. Valid dimensions: skill, experience, values, circles, personality, location.
review_traitclaimId: string, action: 'confirm'|'reject'|'edit', newValue?: stringConfirm, reject, or edit a proposed trait claim.

Tool result size limit

AgentBackend truncates any single tool result to 12 000 bytes to prevent context blowup. Results exceeding that limit are sliced with a ...[truncated] suffix.