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.
Available components
Last scanned (12 hours ago)
Scores higher than 31% of npm servers
Category Project Management
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
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 5 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
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.
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 →
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.
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 →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to take: accept, reject, or adapt |
| adapted_rule | string | – | Modified rule text (required when action is 'adapt') |
| adapted_why | string | – | Modified reasoning text (optional when action is 'adapt') |
| id | string | yes | The recommendation ID to review |
| notes | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_external_id | string | yes | The seat that owns the process, from list_processes |
| sop_id | string | – | SOP id when list_processes returned one |
| sop_title | string | yes | Exact 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confidence | string | – | Filter by confidence level |
| evidence | string | – | Filter by evidence type |
| industry | string | – | Filter by industry |
| limit | number | – | Results per page (max 100) |
| page | number | – | Page number |
| q | string | yes | Search query (e.g. 'shared state file coordination', 'agent escalation failure') |
| template | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| search | string | yes | What 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confidence | string | – | Filter by confidence |
| evidence | string | – | Filter by evidence type |
| industry | string | – | Filter by industry |
| limit | number | – | Results per page |
| min_quality | string | – | Minimum publisher quality tier |
| page | number | – | Page number |
| q | string | – | Search query |
| section | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| finding_id | string | yes | – |
| reason | string | – | Required for 'dismissed' and 'not_our_way' |
| snoozed_until | string | – | ISO date; required for 'snoozed' |
| state | string | yes | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| ids_status | string | – | – |
| priority_rank | – | – | – |
| resolution | string | – | Solution captured when moving to 'solved' |
| solved_in_meeting_id | – | – | – |
| ticket_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| repeat | object | – | The new repeat settings. A one-off becomes a series; a series gets the new settings from here on. |
| stop | boolean | – | true: stop the series. This copy stays as a normal to-do; copies already made ahead of their date are removed. |
| todo_id | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| meeting_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Ticket category (default: bug) |
| description | string | yes | Detailed description: steps to reproduce, expected behavior, actual behavior |
| priority | string | – | Priority level (default: medium) |
| reporter_email | string | – | Email for follow-up (optional) |
| title | string | yes | Brief 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).
| Name | Type | Req | Description |
|---|---|---|---|
| notes | string | – | Optional context. E.g. 'after 12pm send wave'. |
| owner_external_id | string | yes | The agent or human external id that owns the KPI. E.g. 'AGT_DIRK'. |
| period_start | string | – | ISO date for the period start (YYYY-MM-DD). If omitted, computes start of current period from the KPI's time grain. |
| title | string | yes | The KPI title (case-insensitive match against the KPI's stored title). E.g. 'Cold emails sent'. |
| value | number | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | object | yes | Field key -> new value, only the fields to change. List-like fields take one entry per line. |
| section_key | string | yes | Which 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.
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | – | Mark rock complete |
| on_track | boolean | – | – |
| rock_id | string | yes | – |
| status_note | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cadence | string | – | – |
| enabled | boolean | – | false pauses the schedule, true resumes it |
| hour | integer | – | – |
| minute | integer | – | – |
| schedule_id | string | yes | Schedule id from list_processes |
| timezone | string | – | IANA timezone, e.g. 'America/New_York' |
| weekday | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_notes | string | – | Internal notes from the fixing agent |
| id | string | yes | The ticket ID to update |
| priority | string | – | New priority |
| resolution | string | – | Resolution description (what was done to fix it) |
| status | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| assign_to | array | – | Who it should be on, by name or id. Replaces the current set. |
| description | string | – | – |
| due_at | string|null | – | ISO 8601 datetime, or null to clear the date. |
| priority | string | – | – |
| team | string | – | Move it to a team, by name or id; "none" makes it a personal to-do. |
| title | string | – | – |
| todo_id | string | yes | – |
No output schema declared.
No examples provided.
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
claude mcp add david-steel-otp -- npx -y otp-mcp-server
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.