Atlas / MCP servers / whiteknightonhorse / APIbase

APIbaseBLOCK

mcp/whiteknightonhorse/apibase

One MCP + REST endpoint to APIbase's live tool catalog (counts: https://apibase.pro/llms.txt). No signup, no subscription, no API key to start — pay per call in USDC (x402 on Base or MPP on Tempo).

Verdict
BLOCK
Grade
F
Trust score
40 /100
Exposed tools
11 10r · 1w · 0d
Transport
sse · stdio · streamable-http
License
MIT
Stars
10
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

One MCP + REST endpoint to 1387 tools from 401 providers. No signup, no subscription, no API key to start — pay per call in USDC (x402 on Base or MPP on Tempo).

[](https://github.com/whiteknightonhorse/APIbase/actions/workflows/security.yml) [](https://github.com/whiteknightonhorse/APIbase/actions/workflows/deploy.yml) [](https://opensource.org/licenses/MIT) [](https://registry.modelcontextprotocol.io) [](https://smithery.ai/servers/apibase-pro/api-hub) [](https://www.mppscan.com/server/2ce70c5f97be51cfcabe13aad9b5f4beae6dc77be586357e04db17644729303d)

Quick Start

{
"mcpServers": {
"apibase": { "url": "https://apibase.pro/mcp" }
}
}

That's the Claude Desktop config. Cursor, Windsurf, OpenAI Agents SDK, LangChain, Google ADK, CrewAI, Microsoft Copilot Studio, and plain REST: [apibase.pro/connect](https://apibase.pro/connect).

For AI Agents

  • [llms.txt](https://apibase.pro/llms.txt) — concise LLM context
  • [ai.txt](https://apibase.pro/ai.txt) — plain-text agent discovery
  • [mcp.json](https://apibase.pro/.well-known/mcp.json) — MCP server metadata
  • [openapi.json](https://apibase.pro/.well-known/openapi.json) — OpenAPI 3.1 spec
  • [api-catalog](https://apibase.pro/.well-known/api-catalog) — RFC 9727 discovery linkset
  • Roadmap — planned/shipped changes that affect what an agent can do or see

Integrations & Registries

**[Full framework guides →](https://apibase.pro/frameworks

Read from source at commit 2347080995a0OBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add apibase-mcp-client -- npx -y [email protected]
03

Exposed tools (11)

10 read · 1 write · 0 destructive.

ToolRiskDescription
APIbasewriteUnified MCP gateway to ${TOOLS} API tools from ${PROV} providers. Pay-per-call via x402 USDC micropayments.
api-workflowreadDesign a multi-step API workflow combining multiple APIbase tools. Returns execution plan with tool sequence, data flow, and error handling.
budgetreadOptional USDC budget constraint for the workflow
discover-toolsreadFind the right APIbase tools for a task. Describes available categories, search strategies, and tool selection criteria.
discover_toolsreadCall discover_tools to browse ${TOOLS} tools by category or task instead of loading all schemas into context.
goalreadEnd-to-end goal (e.g.
openapireadOpenAPI 3.1 spec for every active tool
taskreadWhat you want to accomplish (e.g.
tool-catalogreadFull tool catalog with schemas, pricing, and provider info
topicreadSpecific payment topic (e.g.
x402-payment-guidereadExplains x402 USDC micropayment flow for APIbase. Covers wallet setup on Base, payment headers, escrow mechanics, and refund policy.
04

Trust audit

BLOCKgrade F · trust 40/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (13 observation(s))
Network
declared (17 observation(s))
Shell
declared (4 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/test-nrel.sh:86
if [ "$(echo "$AC > 0" | python3 -c "import sys; print(eval(open('/dev/stdin').read().strip()))")" = "True" ] 2>/dev/null; then
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHNetwork egress · net.env_exfil · CWE-200, CWE-319
scripts/autopilot/incident-cli.py:518
".env" ... curl
Why it matters. reads secrets in the same file that sends data out
HIGHNetwork egress · net.env_exfil · CWE-200, CWE-319
scripts/test-mfapi.sh:32
/.env" ... curl
Why it matters. reads secrets in the same file that sends data out
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.env.example:14
DATABASE_URL=postgresql://apibase:CHANGE_ME@postgres:5432/apibase?schema=public&connection_limit=20
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.env.example:15
DATABASE_URL_WORKER=postgresql://apibase:CHANGE_ME@postgres:5432/apibase?schema=public&connection_limit=10
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.env.example:16
DATABASE_URL_OUTBOX=postgresql://apibase:CHANGE_ME@postgres:5432/apibase?schema=public&connection_limit=5
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
scripts/autopilot/drill-incident-lifecycle.py:221
env["DATABASE_URL"] = f"postgresql://apibase:[email protected]:{PG_PORT}/apibase"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
deploy/sandbox/nginx-sandbox.conf:107
proxy_pass http://127.0.0.1:8881;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
deploy/sandbox/nginx-sandbox.conf:120
proxy_pass http://127.0.0.1:8881;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
deploy/sandbox/nginx-sandbox.conf:131
proxy_pass http://127.0.0.1:8881;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
deploy/sandbox/nginx-sandbox.conf:142
proxy_pass http://127.0.0.1:8881;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
deploy/sandbox/nginx-sandbox.conf:153
proxy_pass http://127.0.0.1:8881;
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
src/mcp/tool-definitions.ts:2619
'Real-time PM2.5 readings (μg/m3) for the 5 Singapore regions (north/south/east/west/central). NEA, SG Open Data Licence v1.0',
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
src/mcp/tool-definitions.ts:11103
'Returns PM10, PM2.5 (μg/m3), carbon monoxide, nitrogen dioxide, sulphur dioxide, ozone, ' +
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/shop/catalog-import/parsers.ts:19
const src = text.replace(/^/, '');
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/device-crypto-and-safety.test.ts:13
const secret = 'tuya-access-token-abc123';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/device-crypto-and-safety.test.ts:19
const secret = 'super-secret-refresh-token-xyz';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/helpers/shop-stream-merchant-real-mppx.child.ts:24
const TOKEN = '0x20c0000000000000000000000000000000000000';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/merchant-renewer-cli.test.ts:38
const TOKEN = '0x20C000000000000000000000b9537d11c60E8b50';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/shop-subscription-keychain.test.ts:401
token: '0x20C000000000000000000000b9537d11c60E8b50',
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/unit/dashboard-noinfo.test.ts:64
return new Function(`${documentShim}\n${depsSrc}\n${src}\nreturn ${name};`)() as T;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/autopilot/drill-email-injection.py:274
row4, rc4 = psql_raw(
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/autopilot/drill-email-injection.py:277
assert rc4 == 0 and row4 == "", "scenario 4: UNMATCHED must never open an incident"
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/autopilot/email-intake.py:2512
row2, rc4 = ap.psql("SELECT incident_id FROM email_events WHERE msg_id = '<[email protected]>'")
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/autopilot/email-intake.py:2513
assert rc4 == 0 and row2

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 2347080995a0full audit observations/trust-audit/mcp-server/whiteknightonhorse__apibase.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-102347080995a0BLOCKF40first audit
06

Questions

What is the APIbase MCP server?

One MCP + REST endpoint to APIbase's live tool catalog (counts: https://apibase.pro/llms.txt). No signup, no subscription, no API key to start — pay per call in USDC (x402 on Base or MPP on Tempo).

What tools does APIbase expose?

11 in total: 10 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is APIbase safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (40/100) and found 7 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does APIbase need?

It reads APIBASE_API_KEY, DRILL_401_KEY, ENCRYPTION_KEY, INTEGRATOR_STREAM_PILOT_TEMPO_KEY, KEY_BRIDGE_ADAPTERS_DIR, KEY_BRIDGE_RESOLUTIONS, MPP_SECRET_KEY, ORCHESTRA_INTERNAL_KEY, PROVIDER_KEY_BHL, PROVIDER_KEY_GFW, PROVIDER_KEY_INSEE and PROVIDER_KEY_NAMESILO from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does APIbase run?

It speaks sse, stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @apibase11/stream-settler at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (2347080995a0), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement