Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
Universal API-to-tool bridge for Claude. Register any API, invoke it naturally. <p align="center"> <img src="https://img.shields.io/badge/MCP-Server-blue?style=for-the-badge" alt="MCP Server" /> <img src="https://img.shields.io/badge/Node.js-18+-green?style=for-the-badge&logo=node.js" alt="Node.js 18+" /> <img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge" alt="MIT License" /> </p> <h1 align="center">Invoke</h1> <p align="center"> <strong>Universal API-to-tool bridge f 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
invoke-mcp 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
Universal API-to-tool bridge for Claude. Register any API, invoke it naturally. <p align="center"> <img src="https://img.shields.io/badge/MCP-Server-blue?style=for-the-badge" alt="MCP Server" /> <img src="https://img.shields.io/badge/Node.js-18+-green?style=for-the-badge&logo=node.js" alt="Node.js 18+" /> <img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge" alt="MIT License" /> </p> <h1 align="center">Invoke</h1> <p align="center"> <strong>Universal API-to-tool bridge f
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
Tarann26
Artifacts
0
Benchmarks
0
Last release
0.1.0
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/tarann26/invoke.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
Tarann26
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
text
User: "What's Apple stock worth today?" Claude: [discovers no stock API configured] Claude: [researches Alpha Vantage API documentation] Claude: [registers the API configuration] Claude: "Please add your API key: invoke add ALPHAVANTAGE_API_KEY <key>" User: [adds key] Claude: [calls API] Claude: "AAPL is currently trading at $187.44, up 1.2% today."
bash
git clone https://github.com/tarann26/invoke.git cd invoke npm install && npm run build ./install-global.sh
bash
invoke add OPENAI_API_KEY sk-...
text
~/.config/invoke/
└── configs/
└── *.yaml # Auto-generated API configs
~/.invoke/
├── secrets.yaml # API keys (chmod 600)
└── logs/
├── api-calls.jsonl # JSON logs
└── api-calls.log # Human-readable logsyaml
version: "1"
apis:
- name: weather
description: Weather data API
base_url: https://api.openweathermap.org/data/2.5
auth:
type: api_key
location: query
name: appid
env_var: OPENWEATHER_API_KEY
endpoints:
- name: current
description: Get current weather for a city
path: /weather
method: GET
params:
- name: q
description: City name
type: string
required: true
location: queryyaml
workflows:
- name: morning_briefing
description: Get weather and news for a city
input_schema:
city:
type: string
required: true
steps:
- id: weather
tool: weather__current
param_mappings:
q: "$input.city"
- id: news
tool: newsapi__headlines
param_mappings:
q: "$input.city"
condition: "$steps.weather.success"Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB MCP
Editorial quality
ready
Universal API-to-tool bridge for Claude. Register any API, invoke it naturally. <p align="center"> <img src="https://img.shields.io/badge/MCP-Server-blue?style=for-the-badge" alt="MCP Server" /> <img src="https://img.shields.io/badge/Node.js-18+-green?style=for-the-badge&logo=node.js" alt="Node.js 18+" /> <img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge" alt="MIT License" /> </p> <h1 align="center">Invoke</h1> <p align="center"> <strong>Universal API-to-tool bridge f
Invoke is an MCP (Model Context Protocol) server that lets Claude access any REST API. When Claude needs data it doesn't have, it automatically researches the API, registers it, and makes the call.
User: "What's Apple stock worth today?"
Claude: [discovers no stock API configured]
Claude: [researches Alpha Vantage API documentation]
Claude: [registers the API configuration]
Claude: "Please add your API key: invoke add ALPHAVANTAGE_API_KEY <key>"
User: [adds key]
Claude: [calls API]
Claude: "AAPL is currently trading at $187.44, up 1.2% today."
git clone https://github.com/tarann26/invoke.git
cd invoke
npm install && npm run build
./install-global.sh
The install script will:
invoke CLI commandinvoke add OPENAI_API_KEY sk-...
Restart Claude Desktop or Claude Code to load the Invoke MCP server.
Just ask naturally. Claude will discover, research, and register APIs as needed:
| Feature | Description | |---------|-------------| | Dynamic API Discovery | Claude researches and registers APIs on first use | | Universal API Support | Any REST API works — LLMs, data APIs, internal services | | Multi-Key Support | Multiple keys per API (dev/prod/project) with runtime selection | | Request Caching | Cache API responses with configurable TTL to reduce costs | | Health Dashboard | Monitor API health, latency, and success rates | | Workflows | Chain multiple API calls with data passing between steps | | Multi-LLM | Let Claude talk to GPT-4, Gemini, Mistral, and more | | Full Logging | Every API call logged with latency, status, and errors | | Secure by Default | API keys stay local, sensitive data masked in logs |
Invoke uses dynamic API discovery instead of static templates. When you ask Claude for data:
This means you don't need to pre-configure APIs. Just ask for data, and Claude handles the rest.
For LLM APIs (OpenAI, Anthropic, etc.), Claude will always ask which model to use before making calls. Different models have different pricing, so Claude never assumes a default.
~/.config/invoke/
└── configs/
└── *.yaml # Auto-generated API configs
~/.invoke/
├── secrets.yaml # API keys (chmod 600)
└── logs/
├── api-calls.jsonl # JSON logs
└── api-calls.log # Human-readable logs
API configs are auto-generated by Claude, but you can also create them manually:
version: "1"
apis:
- name: weather
description: Weather data API
base_url: https://api.openweathermap.org/data/2.5
auth:
type: api_key
location: query
name: appid
env_var: OPENWEATHER_API_KEY
endpoints:
- name: current
description: Get current weather for a city
path: /weather
method: GET
params:
- name: q
description: City name
type: string
required: true
location: query
workflows:
- name: morning_briefing
description: Get weather and news for a city
input_schema:
city:
type: string
required: true
steps:
- id: weather
tool: weather__current
param_mappings:
q: "$input.city"
- id: news
tool: newsapi__headlines
param_mappings:
q: "$input.city"
condition: "$steps.weather.success"
auth:
type: api_key
location: header # or "query"
name: X-API-Key
env_var: MY_API_KEY
</details>
<details>
<summary><strong>Bearer Token</strong></summary>
auth:
type: bearer
env_var: MY_TOKEN
</details>
<details>
<summary><strong>Basic Auth</strong></summary>
auth:
type: basic
username_env: MY_USERNAME
password_env: MY_PASSWORD
</details>
Invoke supports multiple keys per API for different environments (dev/prod) or projects:
# Add keys with aliases
invoke add OPENAI_API_KEY sk-default-key # Default key
invoke add OPENAI_API_KEY:dev sk-dev-key # Development
invoke add OPENAI_API_KEY:prod sk-prod-key # Production
invoke add OPENAI_API_KEY:project_x sk-proj-key # Project-specific
# View configured aliases
invoke keys --aliases
How it works:
CLI Usage — Use --key-alias to select which key to use:
invoke call openai__chat --key-alias prod --param model=gpt-4o
MCP Usage — When aliases exist, Claude sees a __key_alias parameter on authenticated tools:
Claude: [calls openai__chat({ model: "gpt-4o", __key_alias: "prod", ... })]
Listing Aliases — Claude can use invoke__select_key to see available aliases:
Claude: [calls invoke__select_key({ env_var: "OPENAI_API_KEY" })]
→ { aliases: ["dev", "prod", "project_x"], has_default: true }
Secrets file format:
# ~/.invoke/secrets.yaml
secrets:
# Simple format (single key)
WEATHER_API_KEY: "abc123"
# Extended format (multiple keys)
OPENAI_API_KEY:
default: "sk-default..."
aliases:
dev: "sk-dev..."
prod: "sk-prod..."
invoke add OPENAI_API_KEY # Secure: prompts for hidden input
invoke add OPENAI_API_KEY sk-... # Add default key (visible in history)
invoke add OPENAI_API_KEY:dev # Add alias with hidden input
invoke add OPENAI_API_KEY:prod sk-prod-... # Add 'prod' alias
invoke add MY_KEY --expires 2025-12-31 # Key with expiration date
invoke add MY_KEY --env prod # Mark as production key
invoke keys # List all keys
invoke keys --aliases # Show keys with aliases
invoke keys --show # Show masked values
invoke remove OPENAI_API_KEY # Remove entire key
invoke remove OPENAI_API_KEY:dev # Remove specific alias
invoke rotate OPENAI_API_KEY # Rotate key (keeps old as :previous)
invoke export # Export all keys to shell
invoke export OPENAI_API_KEY # Export single key (default)
invoke export OPENAI_API_KEY:prod # Export specific alias
invoke export OPENAI_API_KEY --value # Output raw value (for piping)
Secure Hidden Input — When you omit the value, invoke prompts for hidden input:
$ invoke add OPENAI_API_KEY
Adding OPENAI_API_KEY with hidden input (value won't appear in shell history)
Enter value for OPENAI_API_KEY: ••••••••••••••••••••
Confirm value: ••••••••••••••••••••
✓ Added OPENAI_API_KEY
This keeps your API keys out of shell history and any monitoring tools.
Make API calls directly via CLI (keys never exposed to caller):
invoke call openai__chat --param model=gpt-4o-mini --param 'messages=[{"role":"user","content":"Hi"}]'
invoke call openai__chat --key-alias prod --param model=gpt-4o # Use specific key alias
invoke list # List all APIs and endpoints
invoke config # Show config paths and status
invoke cache # View cache statistics
invoke cache --clear # Clear all cache
invoke cache --clear weather # Clear cache for specific API
invoke workflow --list # List available workflows
invoke workflow morning_briefing --input '{"city": "London"}'
invoke logs # View recent API calls
invoke logs --lines 50 # View last 50 entries
invoke logs --follow # Follow logs in real-time
invoke security # Security status overview
invoke security --expiring # Show keys expiring in 30 days
invoke security --rate-limits # Show rate limit status per key
invoke audit # View audit log (SOC2 compliance)
invoke audit --type api_call # Filter audit by event type
invoke rotate OPENAI_API_KEY # Rotate key, keep old as :previous
| Command | Description |
|---------|-------------|
| invoke add <KEY>[:<alias>] [value] | Add key (prompts for hidden input if no value) |
| invoke remove <KEY>[:<alias>] | Remove an API key or specific alias |
| invoke rotate <KEY> | Rotate key, keeping old as :previous alias |
| invoke keys [--aliases] [--show] | List all configured keys |
| invoke list | List all APIs and endpoints |
| invoke logs | View recent API calls |
| invoke config | Show configuration status |
| invoke cache [--clear] | Cache statistics and management |
| invoke workflow | List or run workflows |
| invoke export [KEY[:<alias>]] | Export all keys or a single key/alias |
| invoke call <api__endpoint> [--key-alias] | Make API call directly (secure mode) |
| invoke security | Security status and key expiration |
| invoke audit | View audit log for compliance |
| invoke help | Show help message |
These tools are available to Claude when connected to Invoke as an MCP server:
| Tool | Description |
|------|-------------|
| invoke__discover | Search configured APIs by keyword or capability |
| invoke__research_api | Get guidance on researching a new API |
| invoke__register_api | Register a new API from structured config |
| invoke__select_key | List available key aliases for runtime selection |
| invoke__logs | View recent API calls and statistics |
| invoke__status | View health status of all APIs |
| invoke__cache | Manage request cache (stats, clear) |
| invoke__workflow | Execute workflows (named or ad-hoc) |
| workflow__* | Auto-generated tools for each defined workflow |
| {api}__{endpoint} | Auto-generated tools for each API endpoint |
User: "What's the weather in Paris?"
Claude: [calls invoke__discover("weather")]
→ No APIs found
Claude: [calls invoke__research_api({ api_name: "openweathermap", api_type: "data" })]
→ Gets guidance on what to research
Claude: [searches "openweathermap API documentation"]
→ Reads the docs
Claude: [calls invoke__register_api({ name: "weather", base_url: "...", ... })]
→ Config saved to ~/.config/invoke/configs/weather.yaml
Claude: "I've registered the OpenWeatherMap API. Please add your key:
invoke add OPENWEATHER_API_KEY <your-key>"
User: [adds key]
Claude: [calls weather__current({ q: "Paris" })]
→ Returns weather data
Claude: "It's currently 12°C and cloudy in Paris."
./uninstall.sh
Or manually:
rm -rf ~/.local/share/invoke
rm -f ~/.local/bin/invoke ~/.local/bin/invoke-server
# Optionally remove configs:
rm -rf ~/.invoke ~/.config/invoke
# Watch mode
npm run dev
# Build
npm run build
# Type checking
npm run typecheck
src/
├── index.ts # MCP server entry point
├── cli.ts # CLI entry point
├── config.ts # Configuration loading
├── executor.ts # API execution engine
├── logger.ts # Request logging
├── cache.ts # Request caching with TTL
├── health.ts # Health dashboard
├── wizard.ts # Setup wizard
├── register.ts # API registration
├── workflow.ts # Workflow execution engine
└── types.ts # TypeScript types and Zod schemas
MIT
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://xpersona.co/api/v1/agents/mcp-tarann26-invoke/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/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.
Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
80
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
74
Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Rank
72
An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Contract JSON
{
"contractStatus": "ready",
"authModes": [
"mcp",
"api_key"
],
"requires": [
"mcp",
"lang:typescript"
],
"forbidden": [],
"supportsMcp": true,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": "https://github.com/tarann26/invoke#input",
"outputSchemaRef": "https://github.com/tarann26/invoke#output",
"dataRegion": "global",
"contractUpdatedAt": "2026-02-24T19:46:50.202Z",
"sourceUpdatedAt": "2026-02-24T19:46:50.202Z",
"freshnessSeconds": 4421210
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/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-04-16T23:53:40.472Z"
}
},
"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": "mcp",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "claude",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "api",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "tools",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "ai",
"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": "anthropic",
"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"
}
],
"flattenedTokens": "protocol:MCP|supported|contract capability:mcp|supported|profile capability:claude|supported|profile capability:api|supported|profile capability:tools|supported|profile capability:ai|supported|profile capability:llm|supported|profile capability:anthropic|supported|profile capability:cli|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://xpersona.co/api/v1/agents/mcp-tarann26-invoke/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:46:50.202Z",
"isPublic": true
},
{
"factKey": "auth_modes",
"category": "compatibility",
"label": "Auth modes",
"value": "mcp, api_key",
"href": "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:46:50.202Z",
"isPublic": true
},
{
"factKey": "schema_refs",
"category": "artifact",
"label": "Machine-readable schemas",
"value": "OpenAPI or schema references published",
"href": "https://github.com/tarann26/invoke#input",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:46:50.202Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Tarann26",
"href": "https://github.com/tarann26/invoke",
"sourceUrl": "https://github.com/tarann26/invoke",
"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://xpersona.co/api/v1/agents/mcp-tarann26-invoke/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-tarann26-invoke/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 invoke-mcp and adjacent AI workflows.