Crawler Summary

servherd answer-first brief

CLI tool and MCP server for managing development servers across projects <p align="center"> <img src="assets/logo.png" alt="servherd logo" width="180"> </p> <h1 align="center">servherd</h1> <p align="center"> <strong>Herd your development servers</strong> </p> <p align="center"> <a href="https://www.npmjs.com/package/servherd"><img src="https://img.shields.io/npm/v/servherd.svg" alt="npm version"></a> <a href="https://github.com/apowers313/servherd/actions/workflows/ci.yml"><img src="http Published capability contract available. No trust telemetry is available yet. Last updated 2/24/2026.

Freshness

Last checked 2/22/2026

Best For

Contract is available with explicit auth and schema references.

Not Ideal For

servherd is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.

Evidence Sources Checked

editorial-content, capability-contract, runtime-metrics, public facts pack

Claim this agent
Agent DossierGitHubSafety: 100/100

servherd

CLI tool and MCP server for managing development servers across projects <p align="center"> <img src="assets/logo.png" alt="servherd logo" width="180"> </p> <h1 align="center">servherd</h1> <p align="center"> <strong>Herd your development servers</strong> </p> <p align="center"> <a href="https://www.npmjs.com/package/servherd"><img src="https://img.shields.io/npm/v/servherd.svg" alt="npm version"></a> <a href="https://github.com/apowers313/servherd/actions/workflows/ci.yml"><img src="http

MCPverified

Public facts

6

Change events

1

Artifacts

0

Freshness

Feb 22, 2026

Verifiededitorial-content1 verified compatibility signal

Published capability contract available. No trust telemetry is available yet. Last updated 2/24/2026.

Schema refs publishedTrust evidence available

Trust score

Unknown

Compatibility

MCP

Freshness

Feb 22, 2026

Vendor

Apowers313

Artifacts

0

Benchmarks

0

Last release

1.1.2

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

Summary

Published capability contract available. No trust telemetry is available yet. Last updated 2/24/2026.

Setup snapshot

git clone https://github.com/apowers313/servherd.git
  1. 1

    Setup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Apowers313

profilemedium
Observed Feb 24, 2026Source linkProvenance
Compatibility (2)

Protocol compatibility

MCP

contracthigh
Observed Feb 24, 2026Source linkProvenance

Auth modes

mcp, api_key

contracthigh
Observed Feb 24, 2026Source linkProvenance
Artifact (1)

Machine-readable schemas

OpenAPI or schema references published

contracthigh
Observed Feb 24, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB MCP

Extracted files

0

Examples

6

Snippets

0

Languages

typescript

Executable Examples

bash

npm install -g servherd

bash

# Before: Hardcoded port that might conflict
npm run dev

# After: Automatic port assignment with servherd
npx servherd start -- npm run dev -- --port {{port}}

bash

# Start a server with automatic port assignment
servherd start -- npx vite --port {{port}}

# Start with a custom name
servherd start --name my-app -- npm run dev -- --port {{port}}

# List all servers
servherd list

# View server details
servherd info my-app

# View server logs
servherd logs my-app

# Follow logs in real-time
servherd logs my-app --follow

# Stop a server
servherd stop my-app

# Stop all servers
servherd stop --all

bash

# Using CLI flag
servherd start --name my-vite-app -- npx vite --port {{port}}

# Using environment variable in vite.config.js
servherd start --name my-vite-app -e VITE_PORT={{port}} -- npx vite

javascript

export default defineConfig({
  server: {
    port: parseInt(process.env.VITE_PORT) || 5173,
  },
})

bash

servherd start --name my-docs -- npx vitepress dev docs --port {{port}}

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB MCP

Docs source

GITHUB MCP

Editorial quality

ready

CLI tool and MCP server for managing development servers across projects <p align="center"> <img src="assets/logo.png" alt="servherd logo" width="180"> </p> <h1 align="center">servherd</h1> <p align="center"> <strong>Herd your development servers</strong> </p> <p align="center"> <a href="https://www.npmjs.com/package/servherd"><img src="https://img.shields.io/npm/v/servherd.svg" alt="npm version"></a> <a href="https://github.com/apowers313/servherd/actions/workflows/ci.yml"><img src="http

Full README
<p align="center"> <img src="assets/logo.png" alt="servherd logo" width="180"> </p> <h1 align="center">servherd</h1> <p align="center"> <strong>Herd your development servers</strong> </p> <p align="center"> <a href="https://www.npmjs.com/package/servherd"><img src="https://img.shields.io/npm/v/servherd.svg" alt="npm version"></a> <a href="https://github.com/apowers313/servherd/actions/workflows/ci.yml"><img src="https://github.com/apowers313/servherd/actions/workflows/ci.yml/badge.svg" alt="CI Status"></a> <a href="https://coveralls.io/github/apowers313/servherd?branch=master"><img src="https://coveralls.io/repos/github/apowers313/servherd/badge.svg?branch=master" alt="Coverage"></a> <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a> </p>

The Problem

When doing AI-driven development across multiple projects, each of which can have multiple git worktrees and multiple development servers (Vite, VitePress, Storybook, logging servers, etc.), you quickly run into resource conflicts:

  • Port collisions: Multiple servers fighting for the same ports
  • Wasted AI time: Your AI assistant spends cycles hunting for available ports instead of coding
  • Wrong server errors: The AI connects to the wrong server instance, causing confusing bugs and failed requests
  • Lost context: No easy way to track which servers are running where across your development environment

The Solution

servherd manages your herd of development servers for AI-driven development. It provides deterministic port assignment, human-readable server names, and an MCP interface so your AI assistant always knows exactly which servers are running and how to reach them.

Key Features

Powered by PM2

servherd uses PM2 under the hood for robust process management:

  • Reliable background operation - Servers run as managed daemon processes
  • Automatic restarts - Crashed servers can be automatically restarted
  • Log management - Centralized logging with rotation support
  • Resource monitoring - Track CPU and memory usage per server
  • Full lifecycle control - Start, stop, restart, and remove servers with ease

Intelligent Port Management

  • Deterministic port assignment - Same project + command always gets the same port
  • Automatic conflict resolution - If a port is busy, servherd finds the next available one
  • Port availability checking - Verifies ports are free before starting servers
  • Configurable port ranges - Define your own port range (default: 3000-9999)

Developer Experience

  • Human-readable server names - Auto-generated names like "brave-tiger" or "calm-panda"
  • Template variable substitution - Use {{port}}, {{hostname}}, {{url}} in commands
  • Environment variable templating - Pass dynamic values with -e PORT={{port}}
  • JSON output mode - Machine-readable output with --json for scripting
  • CI/CD friendly - Automatic CI detection with non-interactive mode

AI Integration

  • MCP server - Native integration with Claude Code and other MCP-compatible tools
  • Resource discovery - AI can query running servers and their status
  • Log access - AI can read server logs for debugging

Quick Start

Installation

npm install -g servherd

Replace Your npm Scripts

Instead of hunting for available ports, let servherd manage them:

# Before: Hardcoded port that might conflict
npm run dev

# After: Automatic port assignment with servherd
npx servherd start -- npm run dev -- --port {{port}}

Basic Usage

# Start a server with automatic port assignment
servherd start -- npx vite --port {{port}}

# Start with a custom name
servherd start --name my-app -- npm run dev -- --port {{port}}

# List all servers
servherd list

# View server details
servherd info my-app

# View server logs
servherd logs my-app

# Follow logs in real-time
servherd logs my-app --follow

# Stop a server
servherd stop my-app

# Stop all servers
servherd stop --all

Development Tool Examples

Vite

Vite accepts the port via --port flag:

# Using CLI flag
servherd start --name my-vite-app -- npx vite --port {{port}}

# Using environment variable in vite.config.js
servherd start --name my-vite-app -e VITE_PORT={{port}} -- npx vite

In your vite.config.js:

export default defineConfig({
  server: {
    port: parseInt(process.env.VITE_PORT) || 5173,
  },
})

VitePress

VitePress uses the --port flag:

servherd start --name my-docs -- npx vitepress dev docs --port {{port}}

Storybook

Storybook accepts the port via -p flag:

servherd start --name my-stories -- npx storybook dev -p {{port}}

Next.js

Next.js uses the -p or --port flag:

# Development server
servherd start --name my-next-app -- npx next dev -p {{port}}

# Production server
servherd start --name my-next-prod -- npx next start -p {{port}}

Webpack Dev Server

Webpack Dev Server accepts --port:

servherd start --name my-webpack-app -- npx webpack serve --port {{port}}

Create React App

Create React App reads the PORT environment variable:

servherd start --name my-react-app -e PORT={{port}} -- npm start

Express / Node.js Servers

For custom Node.js servers, pass the port as an environment variable:

servherd start --name my-api -e PORT={{port}} -- node server.js

In your server.js:

const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Server running on port ${port}`));

Python (Flask/FastAPI)

# Flask
servherd start --name my-flask -e FLASK_RUN_PORT={{port}} -- flask run

# FastAPI with Uvicorn
servherd start --name my-fastapi -- uvicorn main:app --port {{port}}

Cross-Server Communication

When running multiple servers (like a frontend and backend), you often need one server to know the port of another. The {{$ ...}} helper looks up properties from other running servers.

Basic Syntax

# Positional arguments: {{$ "server-name" "property"}}
{{$ "backend" "port"}}

# Named arguments (more explicit)
{{$ service="backend" prop="port"}}

# With aliases
{{$ svc="backend" property="port"}}

# Explicit working directory (for cross-project lookups)
{{$ service="backend" prop="port" cwd="/path/to/project"}}

Available Properties

| Property | Description | Example | |----------|-------------|---------| | port | Server's assigned port | 9042 | | url | Full URL | http://localhost:9042 | | name | Server name | backend | | hostname | Configured hostname | localhost | | protocol | Protocol (http/https) | http |

Frontend + Backend Example

Start a backend API server, then a frontend that connects to it:

# Start backend first
servherd start -n backend -e 'PORT={{port}}' -- node server.js

# Start frontend with reference to backend's port
servherd start -n frontend \
  -e 'PORT={{port}}' \
  -e 'API_URL=http://localhost:{{$ "backend" "port"}}' \
  -- npm run dev

The frontend's API_URL will be set to the backend's actual port (e.g., http://localhost:9042).

npm Scripts Example

In your package.json, use single quotes inside double quotes to avoid escaping issues:

{
  "scripts": {
    "start:backend": "servherd start -n backend -e 'PORT={{port}}' -- node server.js",
    "start:frontend": "servherd start -n frontend -e 'PORT={{port}}' -e 'API_URL=http://localhost:{{$ \"backend\" \"port\"}}' -- npm run dev",
    "stop": "servherd stop --all"
  }
}

Quoting tips for npm scripts:

  • Wrap -e values in single quotes: -e 'VAR={{value}}'
  • Use escaped double quotes inside for $ helper arguments: {{$ \"name\" \"prop\"}}
  • Both {{$ "x" "y"}} and {{$ 'x' 'y'}} work in Handlebars, but single quotes are easier in JSON

Important Notes

  1. Start order matters - The referenced server must be running before you start the dependent server
  2. Same working directory - By default, lookups are scoped to servers in the same working directory (same git worktree)
  3. Error on missing - If the referenced server doesn't exist, the start command will fail with a clear error message
  4. Cross-project lookups - Use the cwd parameter to reference servers in other directories

CLI Reference

Global Options

These options can be used with any command:

| Option | Description | |--------|-------------| | --json | Output results as JSON | | --ci | Force CI mode behavior | | --no-ci | Force non-CI mode (override CI detection) |

servherd start

Start a new development server or return an existing one.

servherd start [options] -- <command>

Options: | Option | Description | |--------|-------------| | -n, --name <name> | Custom server name (auto-generated if not provided) | | -p, --port <port> | Override the deterministic port assignment | | --protocol <protocol> | Protocol to use: http or https | | -t, --tag <tag...> | Tags for grouping servers (can use multiple times) | | -d, --description <text> | Description of the server | | -e, --env <KEY=VALUE...> | Environment variables (supports templates) |

Template Variables: | Variable | Description | Example | |----------|-------------|---------| | {{port}} | Assigned port number | 8080 | | {{hostname}} | Configured hostname | localhost | | {{url}} | Full URL | http://localhost:8080 | | {{https-cert}} | HTTPS certificate path | /path/to/cert.pem | | {{https-key}} | HTTPS key path | /path/to/key.pem | | {{$ "name" "prop"}} | Look up property from another server | {{$ "backend" "port"}} |

Examples:

# Start with automatic name and port
servherd start -- npx vite --port {{port}}

# Start with custom name and tags
servherd start --name frontend --tag web --tag dev -- npm run dev -- --port {{port}}

# Start with environment variables
servherd start --name api -e PORT={{port}} -e NODE_ENV=development -- node server.js

# Start on a specific port
servherd start --name fixed-port --port 8080 -- npx vite --port {{port}}

servherd stop

Stop one or more running servers.

servherd stop [name] [options]

Options: | Option | Description | |--------|-------------| | -a, --all | Stop all managed servers | | -t, --tag <tag> | Stop all servers with this tag | | -f, --force | Force stop using SIGKILL |

Examples:

# Stop by name
servherd stop brave-tiger

# Stop all servers
servherd stop --all

# Force stop a hung server
servherd stop my-server --force

# Stop all servers with a tag
servherd stop --tag frontend

servherd list

List all managed servers.

servherd list [options]

Options: | Option | Description | |--------|-------------| | -r, --running | Show only running servers | | -s, --stopped | Show only stopped servers | | -t, --tag <tag> | Filter by tag | | -c, --cwd <path> | Filter by working directory | | --cmd <pattern> | Filter by command pattern (glob syntax) |

Command Pattern Examples:

# Find all Storybook servers
servherd list --cmd "*storybook*"

# Find all Vite servers
servherd list --cmd "*vite*"

# Find servers using npm
servherd list --cmd "npm *"

# Find Vite or Storybook servers (brace expansion)
servherd list --cmd "*{vite,storybook}*"

# Combine with other filters
servherd list --cmd "*storybook*" --running --tag frontend

servherd info

Show detailed information about a server.

servherd info <name>

Displays:

  • Server name and status
  • Port and URL
  • Working directory and command
  • Process ID and uptime
  • Memory and CPU usage
  • Tags and description

servherd logs

View and manage server logs.

servherd logs [name] [options]

Options: | Option | Description | |--------|-------------| | -n, --lines <number> | Number of lines to show from end (default: 50) | | -e, --error | Show error logs instead of stdout | | -f, --follow | Follow logs in real-time (like tail -f) | | --since <time> | Show logs since time (e.g., 1h, 30m, 2024-01-15) | | --head <number> | Show first N lines instead of last | | --flush | Clear logs instead of displaying | | -a, --all | Apply to all servers (with --flush) |

Examples:

# View last 50 lines (default)
servherd logs my-app

# View last 100 lines
servherd logs my-app --lines 100

# Follow logs in real-time
servherd logs my-app --follow

# Show logs from the last hour
servherd logs my-app --since 1h

# Show logs since a specific date
servherd logs my-app --since 2024-01-15

# Show first 20 lines
servherd logs my-app --head 20

# View error logs
servherd logs my-app --error

# Clear logs for a server
servherd logs my-app --flush

# Clear logs for all servers
servherd logs --flush --all

servherd restart

Restart a running server.

servherd restart [name] [options]

Options: | Option | Description | |--------|-------------| | -a, --all | Restart all servers | | -t, --tag <tag> | Restart servers with this tag |

servherd remove

Remove servers from the registry and stop them.

servherd remove [name] [options]

Options: | Option | Description | |--------|-------------| | -a, --all | Remove all servers | | -t, --tag <tag> | Remove servers with this tag | | -f, --force | Skip confirmation prompt |

servherd config

View or modify configuration.

servherd config [options]

Options: | Option | Description | |--------|-------------| | -s, --show | Display all configuration values | | -g, --get <key> | Get a specific configuration value | | --set <key> | Set a configuration value (requires --value) | | --value <value> | Value to set | | -r, --reset | Reset configuration to defaults |

Examples:

# Show all configuration
servherd config --show

# Get specific value
servherd config --get hostname

# Set hostname
servherd config --set hostname --value myhost.local

# Set port range
servherd config --set portRange.min --value 4000
servherd config --set portRange.max --value 5000

# Configure HTTPS
servherd config --set protocol --value https
servherd config --set httpsCert --value /path/to/cert.pem
servherd config --set httpsKey --value /path/to/key.pem

# Reset to defaults
servherd config --reset

servherd mcp

Start the MCP (Model Context Protocol) server.

servherd mcp

This starts an MCP server over stdio for integration with AI tools.

MCP Server Integration

Setup with Claude Code

The easiest way to add servherd to Claude Code is using the claude mcp add command:

claude mcp add servherd -- npx servherd mcp

This registers servherd as an MCP server that Claude Code can use to manage your development servers.

With a specific scope:

# Add for current project only
claude mcp add --scope project servherd -- npx servherd mcp

# Add for current user (all projects)
claude mcp add --scope user servherd -- npx servherd mcp

Alternative: Manual configuration

Add to your MCP settings file (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "servherd": {
      "command": "npx",
      "args": ["servherd", "mcp"]
    }
  }
}

Available MCP Tools

| Tool | Description | |------|-------------| | servherd_start | Start a development server | | servherd_stop | Stop a server | | servherd_restart | Restart a server | | servherd_list | List all servers (supports filtering by tag, cwd, cmd pattern) | | servherd_info | Get server details | | servherd_logs | View server logs | | servherd_remove | Remove a server | | servherd_config | View/modify configuration | | servherd_refresh | Refresh servers with config drift |

servherd_list Parameters:

  • running (boolean) - Only show running servers
  • tag (string) - Filter by tag
  • cwd (string) - Filter by working directory
  • cmd (string) - Filter by command pattern (glob syntax, e.g., *storybook*)

MCP Resources

| Resource | Description | |----------|-------------| | servherd://servers/{name} | Server details as JSON | | servherd://servers/{name}/logs | Server output logs |

Configuration

Global Configuration File

Location: ~/.servherd/config.json

{
  "version": "1",
  "hostname": "localhost",
  "protocol": "http",
  "portRange": {
    "min": 3000,
    "max": 9999
  },
  "httpsCert": "/path/to/cert.pem",
  "httpsKey": "/path/to/key.pem",
  "tempDir": "~/.servherd/tmp",
  "pm2": {
    "logDir": "~/.servherd/logs",
    "pidDir": "~/.servherd/pids"
  }
}

Environment Variables

Override configuration with environment variables:

| Variable | Description | Default | |----------|-------------|---------| | SERVHERD_HOSTNAME | Default hostname | localhost | | SERVHERD_PROTOCOL | Protocol (http/https) | http | | SERVHERD_PORT_MIN | Minimum port number | 3000 | | SERVHERD_PORT_MAX | Maximum port number | 9999 | | SERVHERD_CONFIG_DIR | Configuration directory | ~/.servherd |

CI Mode

servherd automatically detects CI environments and adjusts behavior:

  • Uses sequential port allocation (instead of deterministic hashing)
  • Disables interactive prompts
  • Uses non-TTY output formatting
  • Respects environment variable configuration

Supported CI environments:

  • GitHub Actions
  • GitLab CI
  • Jenkins
  • CircleCI
  • Travis CI
  • Azure Pipelines
  • Buildkite
  • TeamCity
  • Any environment with CI=true

Manual CI mode control:

# Force CI mode
servherd start --ci -- npm run dev -- --port {{port}}

# Force non-CI mode (even in CI environment)
servherd start --no-ci -- npm run dev -- --port {{port}}

API (Programmatic Usage)

import { ConfigService, RegistryService, ProcessService, PortService } from "servherd";

// Load configuration
const config = new ConfigService();
await config.load();

// Access registry
const registry = new RegistryService(config);
await registry.load();

// Manage processes
const process = new ProcessService(registry);
await process.connect();

// Generate ports
const port = new PortService(config);
const assignedPort = port.generatePort("/path/to/project", "npm start");

Troubleshooting

Server won't start

  1. Check if PM2 is installed: pm2 --version
  2. Check if the port is available: lsof -i :PORT
  3. View server logs: servherd logs <name> --error

Port conflicts

servherd uses deterministic port assignment based on project path and command. If you need a different port:

  1. Use --port to specify an exact port
  2. Use a different server name (changes the hash)
  3. Modify the port range in config
  4. Stop the existing server first

PM2 cleanup

If servers become orphaned:

# List PM2 processes
pm2 list

# Delete servherd processes
pm2 delete all --filter servherd-

# Or remove all and let servherd recreate
servherd remove --all --force

Log management

# Clear logs for a specific server
servherd logs my-app --flush

# Clear all logs
servherd logs --flush --all

# Check log file location
servherd info my-app  # Shows log paths

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT - see LICENSE

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

Verifiedcapability-contract

Contract coverage

Status

ready

Auth

mcp, api_key

Streaming

No

Data region

global

Protocol support

MCP: verified

Requires: mcp, lang:typescript

Forbidden: none

Guardrails

Operational confidence: medium

Contract is available with explicit auth and schema references.
Trust confidence is not low and verification freshness is acceptable.
Protocol support is explicitly confirmed in contract metadata.
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/contract"
curl -s "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/trust"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
Gitlab Ai CatalogUpdated 1h agoRank 86

gitlab-mcp

A Model Context Protocol (MCP) server for GitLab

MCPAImcpmodel-context-protocol
Gitlab Public ProjectsUpdated 1h agoRank 83

gitlab-mcp

A Model Context Protocol (MCP) server for GitLab

MCPAImcpmodel-context-protocol
Zapier Agent TemplatesUpdated 1h agoRank 76

Viral Content Creation Agent

This agent researches trends, scripts videos, sets up engagement automation, and compiles everything into a shareable document.

MCPagentassistantautomation
Machine Appendix

Contract JSON

{
  "contractStatus": "ready",
  "authModes": [
    "mcp",
    "api_key"
  ],
  "requires": [
    "mcp",
    "lang:typescript"
  ],
  "forbidden": [],
  "supportsMcp": true,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": "https://github.com/apowers313/servherd#input",
  "outputSchemaRef": "https://github.com/apowers313/servherd#output",
  "dataRegion": "global",
  "contractUpdatedAt": "2026-02-24T19:46:49.467Z",
  "sourceUpdatedAt": "2026-02-24T19:46:49.467Z",
  "freshnessSeconds": 19550301
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "MCP"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_MCP",
      "generatedAt": "2026-10-09T02:25:10.922Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "MCP",
      "type": "protocol",
      "support": "supported",
      "confidenceSource": "contract",
      "notes": "Confirmed by capability contract"
    },
    {
      "key": "server-manager",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "development-server",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "pm2",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "mcp",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "cli",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "devtools",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "process-manager",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "port-management",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "storybook",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "vite",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "llm",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "ai-tools",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    }
  ],
  "flattenedTokens": "protocol:MCP|supported|contract capability:server-manager|supported|profile capability:development-server|supported|profile capability:pm2|supported|profile capability:mcp|supported|profile capability:cli|supported|profile capability:devtools|supported|profile capability:process-manager|supported|profile capability:port-management|supported|profile capability:storybook|supported|profile capability:vite|supported|profile capability:llm|supported|profile capability:ai-tools|supported|profile"
}

Facts JSON

[
  {
    "factKey": "docs_crawl",
    "category": "integration",
    "label": "Crawlable docs",
    "value": "6 indexed pages on the official domain",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  },
  {
    "factKey": "protocols",
    "category": "compatibility",
    "label": "Protocol compatibility",
    "value": "MCP",
    "href": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/contract",
    "sourceType": "contract",
    "confidence": "high",
    "observedAt": "2026-02-24T19:46:49.467Z",
    "isPublic": true
  },
  {
    "factKey": "auth_modes",
    "category": "compatibility",
    "label": "Auth modes",
    "value": "mcp, api_key",
    "href": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/contract",
    "sourceType": "contract",
    "confidence": "high",
    "observedAt": "2026-02-24T19:46:49.467Z",
    "isPublic": true
  },
  {
    "factKey": "schema_refs",
    "category": "artifact",
    "label": "Machine-readable schemas",
    "value": "OpenAPI or schema references published",
    "href": "https://github.com/apowers313/servherd#input",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/contract",
    "sourceType": "contract",
    "confidence": "high",
    "observedAt": "2026-02-24T19:46:49.467Z",
    "isPublic": true
  },
  {
    "factKey": "vendor",
    "category": "vendor",
    "label": "Vendor",
    "value": "Apowers313",
    "href": "https://github.com/apowers313/servherd#readme",
    "sourceUrl": "https://github.com/apowers313/servherd#readme",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-02-24T19:43:14.176Z",
    "isPublic": true
  },
  {
    "factKey": "handshake_status",
    "category": "security",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "href": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/mcp-apowers313-servherd/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true
  }
]

Change Events JSON

[
  {
    "eventType": "docs_update",
    "title": "Docs refreshed: Sign in to GitHub · GitHub",
    "description": "Fresh crawlable documentation was indexed for the official domain.",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  }
]

Sponsored

Ads related to servherd and adjacent AI workflows.