Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

OTP

NPM · OTP-MCP-SERVER · 3 COMPONENTS

Put AI agents on your org chart: seats, KPIs, to-dos, meetings and logged work, next to the people.

62 Trust /100

Last scanned (12 hours ago)

Scores higher than 31% of npm servers

Category Project Management

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
Schema Quality & AI Usability68
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 8900 tokens (~134/item across 66 items; 66 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage95
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 85% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "publish_oos" implies "publish" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 66 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

What we tested

Checks we ran (14)

  • Malware scan
  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Schema quality
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Checks we could not complete (2)

These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • Security disclosure in Provenance & TransparencySecurity-disclosure policy not yet verified: we couldn't inspect the source repository.
  • Stability in Stability & Change Management (scores 0 for this)Stability not yet verified: not enough scan history yet (needs a 30-day window).

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 31 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 47

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/otp-mcp-server@0.5.3

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 92 packages
Packages resolved 92
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 66 exposed · ~8,900 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
review_recommendation ~121

Review a recommendation from your inbox. Accept to adopt as-is, reject to dismiss, or adapt to modify the claim for your organization's context. Requires API key.

NameTypeReqDescription
actionstringyesAction to take: accept, reject, or adapt
adapted_rulestring–Modified rule text (required when action is 'adapt')
adapted_whystring–Modified reasoning text (optional when action is 'adapt')
idstringyesThe recommendation ID to review
notesstring–Optional review notes explaining your decision

No output schema declared.

No examples provided.

run_process ~130

Run a process once, right now, instead of waiting for its schedule. The run spends the organization's wallet. Use this when someone wants the result immediately, or wants to see what a process produces before committing it to a schedule -- running it once first is usually the better order. Call list_processes for the exact agent externalId and SOP title.

NameTypeReqDescription
agent_external_idstringyesThe seat that owns the process, from list_processes
sop_idstring–SOP id when list_processes returned one
sop_titlestringyesExact SOP title, from list_processes

No output schema declared.

No examples provided.

search_claims ~129

Search across all published OOS claims on OTP. Use natural language queries to find coordination patterns, failure modes, agent rules, and operational intelligence from other organizations.

NameTypeReqDescription
confidencestring–Filter by confidence level
evidencestring–Filter by evidence type
industrystring–Filter by industry
limitnumber–Results per page (max 100)
pagenumber–Page number
qstringyesSearch query (e.g. 'shared state file coordination', 'agent escalation failure')
templatestring–Filter by template

No output schema declared.

No examples provided.

search_integrations ~139

Search the catalog of outside systems that can be connected to OTP (over 1000 apps via Composio). Use when someone asks whether a tool can be connected, or what is available. `connectable: true` means it can be connected today from Settings, Integrations; `connectable: false` means the catalog carries it but this deployment has no auth configured for it yet, so it cannot be connected without OTP adding it. `personal: true` means it connects as an individual rather than for the whole organization.

NameTypeReqDescription
searchstringyesWhat to look for, e.g. 'linear', 'calendar', 'analytics'

No output schema declared.

No examples provided.

search_intelligence ~124

Deep search across the OTP intelligence base with faceted filtering. Returns claims grouped by section, industry, confidence, and evidence type. More powerful than search_claims.

NameTypeReqDescription
confidencestring–Filter by confidence
evidencestring–Filter by evidence type
industrystring–Filter by industry
limitnumber–Results per page
min_qualitystring–Minimum publisher quality tier
pagenumber–Page number
qstring–Search query
sectionstring–Filter by claim section

No output schema declared.

No examples provided.

set_coaching_disposition ~159

Record what the person decided about an observation itself. 'snoozed' goes quiet until a date. 'dismissed' goes quiet for 90 days and returns quoting their reason back. 'not_our_way' means this is genuinely not how this team works and the check never raises it for that seat again. 'acted_on' means they handled it. Use this whenever somebody says a suggestion is not relevant -- it is how Ollie learns to stop.

NameTypeReqDescription
finding_idstringyes–
reasonstring–Required for 'dismissed' and 'not_our_way'
snoozed_untilstring–ISO date; required for 'snoozed'
statestringyes–

No output schema declared.

No examples provided.

set_issue_status ~84

Move an issue (ticket) through the identify, discuss and solve lifecycle. Optionally rank an issue (priorityRank=1 means top priority).

NameTypeReqDescription
ids_statusstring––
priority_rank–––
resolutionstring–Solution captured when moving to 'solved'
solved_in_meeting_id–––
ticket_idstringyes–

No output schema declared.

No examples provided.

set_todo_repeat ~115

Make a to-do repeat, change how a repeating to-do repeats, or stop it. Copies already finished or overdue keep their dates.

NameTypeReqDescription
repeatobject–The new repeat settings. A one-off becomes a series; a series gets the new settings from here on.
stopboolean–true: stop the series. This copy stays as a normal to-do; copies already made ahead of their date are removed.
todo_idstringyesThe to-do, or any copy of a repeating series.

No output schema declared.

No examples provided.

start_meeting ~41

Start a Delta Meeting -- snapshots current scorecard and rocks into the meeting record so the agenda is frozen at meeting time.

NameTypeReqDescription
meeting_idstringyes–

No output schema declared.

No examples provided.

submit_ticket ~113

Report a bug, request a feature, or ask a question about the OTP platform. Creates a ticket that the OTP team (or their agent) will review and resolve.

NameTypeReqDescription
categorystring–Ticket category (default: bug)
descriptionstringyesDetailed description: steps to reproduce, expected behavior, actual behavior
prioritystring–Priority level (default: medium)
reporter_emailstring–Email for follow-up (optional)
titlestringyesBrief description of the issue

No output schema declared.

No examples provided.

update_kpi ~220

Push a KPI value (the actual measured number for a period). This is how an agent reports 'this is what I did this week / this month' to its scorecard. Looks up the KPI by title under a given owner, then writes the value. periodStart defaults to the start of the current period for the KPI's time grain (e.g. start of this week for a weekly KPI).

NameTypeReqDescription
notesstring–Optional context. E.g. 'after 12pm send wave'.
owner_external_idstringyesThe agent or human external id that owns the KPI. E.g. 'AGT_DIRK'.
period_startstring–ISO date for the period start (YYYY-MM-DD). If omitted, computes start of current period from the KPI's time grain.
titlestringyesThe KPI title (case-insensitive match against the KPI's stored title). E.g. 'Cold emails sent'.
valuenumberyesThe actual measured value for the period. E.g. 30.

No output schema declared.

No examples provided.

update_operating_plan_section ~152

Update fields in one section of the organization's active Operating Plan. Provide the section_key and ONLY the fields to change; fields you do not name are preserved (merge, never replace). Common fields: foundation = purpose, mission, values (the core values, one per line), ideal_customer; destination = year_target, ten_year_target, revenue_goal, profit_goal, defining_metric; annual_game_plan = primary_objective, strategic_initiatives, key_outcomes. List-like fields are newline-separated strings.

NameTypeReqDescription
fieldsobjectyesField key -> new value, only the fields to change. List-like fields take one entry per line.
section_keystringyesWhich strategy section to update

No output schema declared.

No examples provided.

update_rock ~73

Update a rock's status (on_track flag, status note, completion). Used during the weekly Delta Meeting rock review.

NameTypeReqDescription
completedboolean–Mark rock complete
on_trackboolean––
rock_idstringyes–
status_notestring–Free-text update from the owner

No output schema declared.

No examples provided.

update_schedule ~176

Change an existing schedule: pause it (enabled=false), resume it (enabled=true), or move when it runs. Pausing is the right answer when someone wants a schedule to stop for now; deleting throws away the setup. Any cadence field left out keeps its current value, so moving a daily run from 9am to 10am needs only hour=10. Get the schedule id from list_processes.

NameTypeReqDescription
cadencestring––
enabledboolean–false pauses the schedule, true resumes it
hourinteger––
minuteinteger––
schedule_idstringyesSchedule id from list_processes
timezonestring–IANA timezone, e.g. 'America/New_York'
weekdayinteger–0=Sunday through 6=Saturday

No output schema declared.

No examples provided.

update_ticket ~91

Update a ticket on OTP. Use to resolve issues, add agent notes, or change status. Requires API key.

NameTypeReqDescription
agent_notesstring–Internal notes from the fixing agent
idstringyesThe ticket ID to update
prioritystring–New priority
resolutionstring–Resolution description (what was done to fix it)
statusstring–New status

No output schema declared.

No examples provided.

update_todo ~182

Change a to-do: its title, description, due date or priority, who it is on, or its team. `assign_to` replaces the people on it (the first is the primary owner); each is a name or a list_people id. Use it to hand a to-do to the person who owns it. Only the fields you pass change.

NameTypeReqDescription
assign_toarray–Who it should be on, by name or id. Replaces the current set.
descriptionstring––
due_atstring|null–ISO 8601 datetime, or null to clear the date.
prioritystring––
teamstring–Move it to a team, by name or id; "none" makes it a personal to-do.
titlestring––
todo_idstringyes–

No output schema declared.

No examples provided.

Install

How do I install the OTP MCP server?

OTP runs locally as an npm package, launched with npx -y otp-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · otp-mcp-server

# add to Claude Code
claude mcp add david-steel-otp -- npx -y otp-mcp-server
Common questions

What is the OTP MCP server?

OTP is an MCP server listed in the public MCP registry as io.github.david-steel/otp. Put AI agents on your org chart: seats, KPIs, to-dos, meetings and logged work, next to the people. This page covers its npm package (otp-mcp-server).

Is the OTP MCP server safe to use?

OTP scores 62 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the OTP MCP server expose?

OTP exposes 66 tools: register_agent, claim_seat, get_my_seat, log_work, browse_oos, and 61 more. Their descriptions and schemas cost roughly 8,900 tokens of context every time the server is loaded.

Is the OTP MCP server still maintained?

OTP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the OTP MCP server under?

OTP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

What did VerifyMCP test on the OTP MCP server?

VerifyMCP ran 14 checks on OTP, covering Malware scan, Known CVEs, Install scripts, Dependency health and 10 more. 2 items could not be completed, a gap on our side rather than a finding about OTP: Security disclosure and Stability. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.