Skip to main content
Glama

OperatorNest tools

Hosted MCP endpoint: https://operatornest.com/mcp (Streamable HTTP, no API key).

Five deterministic calculations, with runnable TypeScript source and the same tool definitions over HTTP and stdio. Each result includes normalized inputs, units, method, assumptions, dated sources and a link to open the result on OperatorNest. Calculations use bundled data and make no network calls. They do not create events, install schedules or execute tasks.

Tool

Result

ai_api_cost

USD per request, day and month from token counts and selected model rates

meeting_time_zones

Shared 30-minute slots within 09:00–17:00 for 2–8 people

recurring_schedule

Monthly hours, recurrence rules and an RFC 5545 calendar

ai_subscription_stack_cost

Monthly and annual totals with overlapping capabilities

cron_next_runs

1–10 matches after a UTC instant, within 366 days

Self-hosting

Requires Node.js 22.19 or newer and pnpm 12.6.0.

git clone https://github.com/OperatorNest/mcp-tools.git
cd mcp-tools
pnpm install --frozen-lockfile
pnpm test:local
pnpm build
node dist/stdio.js

The last command serves newline-delimited MCP messages on stdin/stdout. Logs go to stderr. For a client with stdio support, use node with the absolute path to dist/stdio.js as its argument.

The package is prepared as @operatornest/mcp-tools version 1.0.0. To run a local package through npx before registry publication:

pnpm pack --out /tmp/operatornest-mcp-tools-1.0.0.tgz
npx --yes --package /tmp/operatornest-mcp-tools-1.0.0.tgz operatornest-mcp-tools

After npm publication, the equivalent command is npx --yes @operatornest/mcp-tools@1.0.0. Publication is a separate maintainer action.

HTTP Worker

src/worker.ts exports a standalone Worker with an /mcp endpoint. Use your own Worker configuration; wrangler.jsonc is a local starting point. Run it locally with:

pnpm dev:worker --port 8787

Connect a client to http://localhost:8787/mcp. For remote hosting, follow the Worker setup documentation in your own account.

The HTTP handler caps request bodies at 32 KiB, rejects JSON-RPC batches, returns generic errors and supports CORS for HTTPS origins. Local endpoints accept local origins. It uses stateless JSON responses, without sessions or subscription streams.

Rate limiting is optional. To enable it, configure an MCP_LIMITER rate-limit binding. When present, it uses a SHA-256 hash of CF-Connecting-IP; rejection returns HTTP 429 with Retry-After: 60. Missing client IP or a binding error returns HTTP 503. No binding means no rate limiting.

Related MCP server: Cron Parser API

Client setup

These snippets connect to the hosted endpoint. Substitute your own HTTPS /mcp URL to use your HTTP instance. Setup documentation checked on 2 October 2026; account and workspace controls may affect tool access.

ChatGPT

Enable Developer mode in Settings → Security and login. In Plugins, use the plus button to create a developer-mode app with this URL and No Authentication:

https://operatornest.com/mcp

Select the app from Developer mode in the conversation's plus menu. Official instructions.

Claude

In Claude, open Customize → Connectors, select Add custom connector, and enter https://operatornest.com/mcp. Choose No sign in and add the connector. Enable it for your conversation from the plus menu's Connectors list. Organization owners may need to add it first. Official connector instructions.

For Claude Code:

claude mcp add --transport http operatornest https://operatornest.com/mcp

Check the connection with /mcp. Official instructions.

Codex

codex mcp add operatornest --url https://operatornest.com/mcp

Alternatively, in ~/.codex/config.toml:

[mcp_servers.operatornest]
url = "https://operatornest.com/mcp"

Official instructions.

Cursor

Add to .cursor/mcp.json in your project, or ~/.cursor/mcp.json for all projects:

{
  "mcpServers": {
    "operatornest": { "url": "https://operatornest.com/mcp" }
  }
}

Official instructions.

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "operatornest": { "httpUrl": "https://operatornest.com/mcp" }
  }
}

Official instructions.

VS Code

Add .vscode/mcp.json to your project:

{
  "servers": {
    "operatornest": { "type": "http", "url": "https://operatornest.com/mcp" }
  }
}

Start the server from the configuration file and enable its tools in Agent mode. Official instructions.

Data and limits

API rates are frozen at 2026-09-28T17:08:16.340Z in src/data/pricing-snapshot.json, containing 194 models from models.dev. This is the hosted MCP's filtered snapshot. Use the bundled modelId values; the broader website catalog can include records this server does not accept. Null rates stay unlisted. Caching falls back to the input rate when absent; batch discounts require published data. Non-token charges are excluded.

Subscription plans are in src/data/ai-plans.ts, checked on 27 September 2026 with official source links. Annual totals use published annual charges, or twelve monthly charges when no annual charge is listed. Taxes, regional differences and promotions are excluded.

Meeting and cron results use the runtime's IANA time-zone database. Recurring calendars use floating local times in the importing calendar. Cron supports numeric stars, lists, ranges, steps and weekday names across GitHub, Cloudflare, Quartz and AWS dialects; L, W, # and named months are rejected. Results describe estimates and schedule previews.

Development

pnpm check
pnpm test:local
pnpm build
pnpm dlx @modelcontextprotocol/inspector --cli node dist/stdio.js \
  --method tools/call --tool-name cron_next_runs \
  --tool-arg 'expression=0 9 * * 1-5' --tool-arg dialect=github \
  --tool-arg zone=UTC --tool-arg after=2026-10-02T00:00:00Z --tool-arg count=1

Tests validate input and output schemas, valid and invalid calls, HTTP limits, and initialize/list/call on both transports. See Inspector CLI documentation, contribution guidance, security reporting and data attribution.

MIT. Copyright (c) 2026 OperatorNest.

Available Tools

5 tools
ai_api_costAI API costA
Read-onlyIdempotent
Inspect

Estimate USD per request, day and month from token counts, caching and published batch discounts. Use for an API workload budget, not chat subscriptions. Model IDs use providerId/id from the bundled src/data/pricing-snapshot.json catalog. Rates are from the dated catalog snapshot returned with the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelIdsYes
inputTokensYes
outputTokensYes
batchModelIdsNoOptional model IDs using a published batch discount.
requestsPerDayYes
requestsPerMonthYes
cachedInputTokensYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
inputYes
unitsYes
methodYes
estimatesYes
provenanceYes
assumptionsYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: model IDs must be 'providerId/id' from a bundled catalog, rates come from a dated snapshot, and that snapshot is returned with the result. It does not discuss how caching or batch discounts are applied (e.g., whether cached tokens overlap inputTokens), leaving one behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the purpose, followed by routing guidance and then the model-ID format constraint. No redundancy with the title, which merely restates the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. The description covers provenance, ID format, and scope. The one residual gap is the relationship between cachedInputTokens and inputTokens, which an agent must guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 14%, so the description must compensate, and it does for the highest-risk parameter: the required format for modelIds. It also signals the meaning of the caching and batch-discount inputs. The requests-per-day/month and token parameters are only implied rather than explained, so compensation is partial but meaningful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and output ('Estimate USD per request, day and month') plus the inputs it derives them from, so the tool's function is unambiguous. It also explicitly distinguishes itself from the domain of its sibling ai_subscription_stack_cost, which an agent could otherwise conflate with a generic AI-cost tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives both a positive condition ('Use for an API workload budget') and an explicit exclusion ('not chat subscriptions'), which is exactly the routing decision that separates this tool from ai_subscription_stack_cost. The only minor omission is naming the sibling outright, but the exclusion is functionally sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_subscription_stack_costAI subscription stack costA
Read-onlyIdempotent
Inspect

Total selected AI chat and coding subscriptions in USD and identify overlapping capabilities. Returns monthly charges, annual billing or twelve-charge estimates, plans and dated official sources. Use for reviewing a subscription stack, not API token costs.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
inputYes
plansYes
unitsYes
methodYes
overlapYes
provenanceYes
annualTotalYes
assumptionsYes
monthlyTotalYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds useful provenance (dated official sources) and the estimation method (annual billing vs twelve-charge estimates), but much of the remaining text restates return fields that the output schema already carries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences: the primary action and the secondary capability come first, then returns, then the scoping exclusion. No filler sentences and no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return shape, and rich annotations cover safety. It supplies scope, provenance, and an explicit exclusion, leaving only the empty-list edge case and the required/minItems inconsistency unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it says nothing about planIds. The enum does list every valid plan ID, making the parameter largely self-documenting, but the description never clarifies the odd required-but-minItems-0 behavior (what an empty list returns).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (total selected AI chat and coding subscriptions in USD) plus a secondary function (identify overlapping capabilities), and distinguishes itself from the sibling ai_api_cost by explicitly scoping out API token costs. An agent can identify the tool's job without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use case ('reviewing a subscription stack') and an explicit exclusion ('not API token costs'), which effectively routes the agent away from ai_api_cost. It does not name the alternative tool directly, so it stops just short of full 5-level routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cron_next_runsCron next runsA
Read-onlyIdempotent
Inspect

Preview 1–10 cron matches strictly after a supplied UTC instant within 366 days, in an IANA time zone. Supports numeric stars, lists, ranges, steps and weekday names for GitHub, Cloudflare, Quartz and AWS dialects. L, W, # and named months are rejected. This does not install or run a schedule.

ParametersJSON Schema
NameRequiredDescriptionDefault
zoneYes
afterYesUTC ISO instant from 2000 through 2100; matches are strictly after this instant.
countYes
dialectYes
expressionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
runsYes
toolYes
inputYes
methodYes
provenanceYes
searchDaysYes
assumptionsYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavior: a 366-day lookahead ceiling, strict-after semantics, and which syntax is rejected (L, W, #, named months) — useful limits not present in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler; the core action and its scope lead, supported features and rejections follow, and the negative boundary closes it out. Every clause carries an actionable constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the required-parameter contract plus input constraints are well covered. The only unaddressed area is failure behavior for invalid expressions or mismatched dialect syntax, which the agent must infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 20%, so the description must carry the load, and it largely does: it maps count (1–10), after (UTC instant, strictly after), zone (IANA), and dialect (GitHub/Cloudflare/Quartz/AWS, matching the enum), and describes expression syntax and exclusions. It does not tie dialect-specific quirks to specific dialect values, leaving a small gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Preview) plus resource (1–10 cron matches) and scopes it precisely: strictly after a UTC instant, within 366 days, in an IANA zone. The closing sentence 'does not install or run a schedule' explicitly separates it from the scheduling-oriented sibling recurring_schedule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is clear from the supported dialects and the stated boundary that it neither installs nor runs schedules, which is the key when-not condition against recurring_schedule. It stops short of an explicit 'use this tool when…' routing statement, so 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meeting_time_zonesMeeting time zonesA
Read-onlyIdempotent
Inspect

Find 30-minute meeting times inside 09:00–17:00 for 2–8 people in IANA time zones. The date is local to the first person. Applies daylight saving changes; does not read calendars or send invitations.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesReal date from 2000-01-01 to 2100-12-31.
peopleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes
toolYes
inputYes
unitsYes
methodYes
bestSlotsYes
provenanceYes
assumptionsYes
overlapCountYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world. The description adds real value beyond that: it applies daylight saving changes, works in a fixed 09:00–17:00 window, and disclaims calendar access or invitation sending. The main omission is behavior when no valid slot exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the constraints come first and the negative boundaries follow. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value explanation isn't required, and the description covers inputs, constraints, and boundaries well. The only gap is what an agent should expect when no 30-minute slot satisfies the window.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (date and zone documented, name not), but the description adds the crucial semantic that the date is interpreted in the first person's time zone, which the schema does not state. The 2–8 constraint is also reinforced, adding meaning beyond a bare schema read.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Find), resource (30-minute meeting times), and hard constraints (09:00–17:00, 2–8 people, IANA zones). An agent can distinguish this from cron_next_runs or recurring_schedule purely from the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly scopes what it is not: 'does not read calendars or send invitations', which tells the agent this is a pure computation, not a scheduling action. It also clarifies the date is local to the first person. It stops short of naming alternatives for scheduling-adjacent tasks, so it's clear context without full alternate routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recurring_scheduleRecurring scheduleA
Read-onlyIdempotent
Inspect

Estimate monthly hours for weekly, biweekly and monthly tasks and return recurrence rules plus a complete RFC 5545 calendar. Use to prepare a schedule; no task is executed or calendar updated. Times float in the importing calendar’s local time zone.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksYes
startDateYesReal date from 2000-01-01 to 2100-12-31.

Output Schema

ParametersJSON Schema
NameRequiredDescription
icsYesRFC 5545 calendar with CRLF folding and floating local times.
toolYes
inputYes
unitsYes
methodYes
schedulesYes
provenanceYes
assumptionsYes
monthlyHoursYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description's "no task is executed or calendar updated" largely restates that. Where it adds real value is the non-obvious disclosure that times float in the importing calendar's local time zone, which affects DST and cross-zone correctness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: capability and outputs first, usage and non-effects second, the floating-time caveat last. Every sentence carries distinct information and there is no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and the read-only/idempotent behavior is already annotated. The description covers purpose, non-effects and time-zone semantics, but omits the 20-task cap and the meaning of the owner field, which an agent may need to fill in a valid request.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 50% schema description coverage, the description partially compensates by tying the tool to weekly/biweekly/monthly frequencies and minutes-based hour estimates. It says nothing about the opaque owner enum (delegate/keep/decide), day, monthday, or time, leaving the most ambiguous parameter undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names specific verbs and outputs: estimate monthly hours, return recurrence rules plus a complete RFC 5545 calendar. The scope is concrete and unusual enough to be distinguishable. However, it never references siblings such as cron_next_runs, which is the nearest alternate schedule-generation tool, so differentiation still requires opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to prepare a schedule" gives a general context, but there is no explicit when-not or named alternative, and the sibling cron_next_runs covers adjacent ground without being mentioned. Usage is implied rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedai_api_cost
    • First observedai_subscription_stack_cost
    • First observedcron_next_runs
    • First observedmeeting_time_zones
    • First observedrecurring_schedule

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: API cost estimation, subscription stack cost, meeting time zone calculation, recurring schedule estimation, and cron run preview. Descriptions explicitly differentiate the two cost tools (API vs subscriptions), and the time-related tools cover different aspects (meeting planning vs recurrence vs cron parsing). No overlap or confusion.

Naming Consistency4/5

All names use snake_case and are noun phrases, but prefix usage is inconsistent ('ai_' on two tools, absent on others) and pluralization varies ('zones', 'schedule', 'runs'). These are minor deviations from a fully predictable pattern, yet still readable and mostly consistent.

Tool Count4/5

Five tools falls within the reasonable range (3–15), but for a generically named 'mcp-tools' server the set feels under-scoped. Each tool is distinct, but the collection lacks a cohesive theme, making the count slightly low for the apparent breadth of the name.

Completeness3/5

The tools cover cost estimation and several time/schedule utilities, but they are independent with no shared domain. For a general-purpose toolkit, notable gaps exist (e.g., time zone conversion, calendar integration, broader scheduling operations), and no lifecycle coverage is present.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Parse, validate, and explain cron expressions with pay-per-call via x402 (USDC on Base L2), returning next run times in any timezone.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides exact, deterministic tools for math, dates, units, validation, and more to AI agents, returning precise answers with explicit assumptions and warnings instead of model guesses.
    MIT