gitlab-mcp
A Model Context Protocol (MCP) server for GitLab
Crawler Summary
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
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
Public facts
6
Change events
1
Artifacts
0
Freshness
Feb 22, 2026
Published capability contract available. No trust telemetry is available yet. Last updated 2/24/2026.
Trust score
Unknown
Compatibility
MCP
Freshness
Feb 22, 2026
Vendor
Apowers313
Artifacts
0
Benchmarks
0
Last release
1.1.2
Key links, install path, and a quick operational read before the deeper crawl record.
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.gitSetup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.
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.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Apowers313
Protocol compatibility
MCP
Auth modes
mcp, api_key
Machine-readable schemas
OpenAPI or schema references published
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
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 --allbash
# 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 vitejavascript
export default defineConfig({
server: {
port: parseInt(process.env.VITE_PORT) || 5173,
},
})bash
servherd start --name my-docs -- npx vitepress dev docs --port {{port}}Full documentation captured from public sources, including the complete README when available.
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
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:
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.
servherd uses PM2 under the hood for robust process management:
{{port}}, {{hostname}}, {{url}} in commands-e PORT={{port}}--json for scriptingnpm install -g servherd
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}}
# 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
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 uses the --port flag:
servherd start --name my-docs -- npx vitepress dev docs --port {{port}}
Storybook accepts the port via -p flag:
servherd start --name my-stories -- npx storybook dev -p {{port}}
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 accepts --port:
servherd start --name my-webpack-app -- npx webpack serve --port {{port}}
Create React App reads the PORT environment variable:
servherd start --name my-react-app -e PORT={{port}} -- npm start
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}`));
# 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}}
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.
# 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"}}
| 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 |
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).
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:
-e values in single quotes: -e 'VAR={{value}}'$ helper arguments: {{$ \"name\" \"prop\"}}{{$ "x" "y"}} and {{$ 'x' 'y'}} work in Handlebars, but single quotes are easier in JSONcwd parameter to reference servers in other directoriesThese 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 startStart 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 stopStop 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 listList 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 infoShow detailed information about a server.
servherd info <name>
Displays:
servherd logsView 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 restartRestart a running server.
servherd restart [name] [options]
Options:
| Option | Description |
|--------|-------------|
| -a, --all | Restart all servers |
| -t, --tag <tag> | Restart servers with this tag |
servherd removeRemove 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 configView 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 mcpStart the MCP (Model Context Protocol) server.
servherd mcp
This starts an MCP server over stdio for integration with AI tools.
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"]
}
}
}
| 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 serverstag (string) - Filter by tagcwd (string) - Filter by working directorycmd (string) - Filter by command pattern (glob syntax, e.g., *storybook*)| Resource | Description |
|----------|-------------|
| servherd://servers/{name} | Server details as JSON |
| servherd://servers/{name}/logs | Server output logs |
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"
}
}
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 |
servherd automatically detects CI environments and adjusts behavior:
Supported CI environments:
CI=trueManual 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}}
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");
pm2 --versionlsof -i :PORTservherd logs <name> --errorservherd uses deterministic port assignment based on project path and command. If you need a different port:
--port to specify an exact portIf 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
# 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
See CONTRIBUTING.md for development setup and guidelines.
MIT - see LICENSE
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
ready
Auth
mcp, api_key
Streaming
No
Data region
global
Protocol support
Requires: mcp, lang:typescript
Forbidden: none
Guardrails
Operational confidence: medium
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"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
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
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
A Model Context Protocol (MCP) server for GitLab
A Model Context Protocol (MCP) server for GitLab
This agent researches trends, scripts videos, sets up engagement automation, and compiles everything into a shareable document.
This agent analyzes Reddit data to generate trending content concepts tailored to your audience.
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.