Atlas / MCP servers / slashfi / Agents SDK

Agents SDKBLOCK

mcp/slashfi/agents-sdk
Verdict
BLOCK
Grade
F
Trust score
53 /100
Exposed tools
88 60r · 19w · 9d
Transport
—
License
MIT
Stars
1
01

Overview

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

SDK for building, connecting, and using AI agents. Includes the adk CLI for managing agent connections, installing skills for coding agents, and working with MCP servers.

Copy this into your coding agent

Help me install the Agent Development Kit (adk) — a CLI that connects coding agents to remote
APIs and MCPs. It also installs skill files so you know how to use them.

Run this to install it:
curl -fsSL https://registry.slash.com/adk/install.sh | sh

Then follow the printed instructions to set up skills and connect to agents.

Quick Start

# Install via curl
curl -fsSL https://registry.slash.com/adk/install.sh | sh

# Or via npm
npm install -g @slashfi/agents-sdk
# Set up skills for your coding agent (Claude Code, Cursor, Copilot, etc.)
adk init

# Connect to an agent from the public registry
adk ref add notion

# Browse available agents
adk registry browse public

# Call a tool
adk ref call notion notion-search '{"query": "hello"}'

ADK CLI

The Agent Development Kit CLI. One tool for connecting to agents, managing skills, and the full agent definition lifecycle.

adk --help

Commands Overview

Working with Agents

Setting Up Skills

adk init installs skill files for your coding agents. It auto-detects which agents you have installed and writes skill files in the standard YAML-frontmatter markdown format from agentskills.io.

# Auto-detect and set up all detected agents
adk init
Read from source at commit f8242792dff8OBSERVED · 2026-10-12
Advertisement
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
claude mcp add agents-sdk --env ADK_ENCRYPTION_KEY=${ADK_ENCRYPTION_KEY} --env ADK_TOKEN=${ADK_TOKEN} --env API_KEY=${API_KEY} --env ATLAS_TOKEN=${ATLAS_TOKEN} -- npx -y @slashfi/[email protected]
claude-desktop
{
  "mcpServers": {
    "agents-sdk": {
      "command": "npx",
      "args": [
        "-y",
        "@slashfi/[email protected]"
      ],
      "env": {
        "ADK_ENCRYPTION_KEY": "${ADK_ENCRYPTION_KEY}",
        "ADK_TOKEN": "${ADK_TOKEN}",
        "API_KEY": "${API_KEY}",
        "ATLAS_TOKEN": "${ATLAS_TOKEN}"
      }
    }
  }
}
03

Exposed tools (88)

60 read · 19 write · 9 destructive. Blast radius: 9 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
API-get-blockreadGet a block by ID
ConfigdestructiveManage consumer config — add/remove/list agent refs and registries.
CustomreadOnly this one
EchoreadEchoes input back
IntegrationsreadThird-party API integration management with OAuth2 support
LinearreadTrack issues, manage projects
MathreadDoes math
NotesreadSimple note-taking service
NotionreadNotion integration
RemoteDBreadQuery remote databases
SecretsreadEncrypted secret storage and management
SnowflakereadAnalytics data warehouse queries
UsersreadUser and identity management
WeatherreadCurrent weather and forecasts
addwriteAdd two numbers
add_connectionwriteDirectly store a connection to a remote registry (no OAuth exchange). Used for reverse registration.
add_refwriteAdd or update an agent ref in the consumer config.
add_registrywriteAdd or update a registry in the consumer config.
adkreadWhen connecting to APIs, calling remote tools, managing integrations, or the user asks about adk
apireadRaw Notion API call
api_keywriteCreate or list API keys for MCP access.
calculatereadPerform basic arithmetic
call_integrationreadCall a configured integration API. Supports REST, GraphQL, and agent-registry types.
collect_secretsreadCollect secrets and missing fields for a tool via a secure form.
connect_integrationreadGenerate an OAuth authorization URL for a user to connect an integration.
create_clientwriteCreate a new client with specific scopes (admin only)
create_eventwriteCreate a new event with title, start, and end.
create_notewriteCreate a new note
create_pagewriteCreate a new page in a database
create_tenantwriteCreate a new tenant (organizational unit). All clients and resources are scoped to a tenant.
create_userwriteCreate a new user.
delete_notedestructiveDelete a note by ID
discover_integrationswriteDiscover available integration types that can be set up.
echoreadEcho back a message
exchange_tokenreadExchange a foreign JWT for a local identity. Verifies the JWT via JWKS,
getreadGet a secret
get_datareadReturns 401 on first call, succeeds on retry
get_forecastreadGet a 3-day forecast for a city
get_integrationreadGet a specific integration provider config.
get_notereadGet a note by ID
get_profilereadRequires HTTP Basic token
get_userreadGet a user by ID.
get_weatherreadGet current weather for a city
google-calendarreadView and manage Google Calendar events, calendars, and availability.
greetreadGreet a user by name
handle_oauth_callbackreadHandle an OAuth callback. Exchanges the authorization code for tokens and stores the connection.
link_identityreadLink an external identity (OAuth provider) to a user.
list_agentsreadList all registered agents and their available tools. Optionally search/filter by query using BM25 ranking.
list_clientsreadList all registered clients (admin only)
list_connectionsreadList all connected remote registries.
list_eventsreadList events in a calendar within a time window. Supports calendar ID and timezone filters.
list_identitiesreadList all linked identities for a user.
list_integrationsreadList configured integration providers and user
list_issuesreadList issues
list_notesreadList all notes
list_refsreadList all agent refs in the consumer config.
list_usersreadList users in a tenant.
noopreadUnused in this test
notionwriteInteract with the Notion API — search, create, update pages and databases.
notion-fetchreadFetch a Notion page by ID and return blocks.
notion-searchreadSearch Notion pages and databases by query string.
proxy_callreadProxy an MCP call to a connected remote registry.
querywriteExecute SQL
refdestructiveManage agent refs. Operations: add, remove, list, update, inspect, call, auth, auth-status, refresh-token, resources, read. For
registerreadRegister a new agent client (self-service)
registrydestructiveManage registry connections. Operations: add, remove, list, update, browse, inspect, test.
remove_refdestructiveRemove an agent ref from the consumer config by name.
resolve_identityreadFind a user by their external provider identity.
revokedestructiveDelete a stored secret.
revoke_clientdestructiveRevoke a client and all its tokens (admin only)
rotate_keysreadGenerate a new ES256 signing key and deprecate the current active key. The old key remains valid for verification during the overlap period.
rotate_secretreadRotate a client
run_querywriteRun an analytics query on Snowflake
searchreadSearch
search_pagesreadSearch Notion pages
setup_integrationwriteCreate or update an integration provider config.
some_toolreadNever invoked via the registry in this test
storereadStore secret values. Returns secret:<id> refs for each value.
testreadTest desc
timereadGet the current time in a specified timezone.
timerwriteSchedule a one-shot reminder that fires at a specified time.
tokenreadExchange client credentials for an access token (OAuth2 client_credentials grant)
tool1readA tool
trust_issuerdestructiveAdd or remove a trusted issuer URL. JWTs from trusted issuers are verified against their JWKS endpoint.
unlink_identitydestructiveRemove a linked identity from a user.
update_integrationwriteUpdate a ${h.displayName} instance.
update_userwriteUpdate a user
whoamireadIntrospect the current authentication context
04

Trust audit

BLOCKgrade F · trust 53/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)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (5 observation(s))
Shell
declared (7 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (23)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/adk.ts:348
import("node:child_process").then(({ exec }) => exec(`${opener} "${url}"`)).catch(() => {});
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/adk.ts:559
import("node:child_process").then(({ exec }) => exec(`${opener} "${url}"`)).catch(() => {});
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
<tool:token>:1
Exchange client credentials for an access token (OAuth2 client_credentials grant)
Why it matters. asks the agent to read credentials
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/adk.ts:250
console.log(`\n    Run: adk registry auth ${displayName} --token <token>`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/adk.ts:297
console.log(`  token:        ${config.token_endpoint}`);
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/config-store.test.ts:1423
token: "refreshed-direct-token",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/consumer.test.ts:600
const API_KEY = "test-secret-key-12345";
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
Config, delete_note, ref, registry, remove_ref, revoke, revoke_client, trust_issuer, unlink_identity
Why it matters. 9 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/ref-naming.test.ts:238
url: "http://127.0.0.1:33469",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/ref-naming.test.ts:266
url: "http://127.0.0.1:33469",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/ref-naming.test.ts:291
url: "http://127.0.0.1:33469",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/ref-naming.test.ts:319
url: "http://127.0.0.1:33469",
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/agent-definitions/integrations.ts:1304
const parsed = JSON.parse(atob(input.state));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/config-store.ts:3556
stateContext = JSON.parse(atob(params.state));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/crypto.ts:62
const combined = Uint8Array.from(atob(encrypted), (c) => c.charCodeAt(0));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/jwt.ts:245
const binary = atob(padded);
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/server.ts:404
const unverified = JSON.parse(atob(payloadB64)) as { iss?: string };
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
examples/sample-server-registry/package.json
hono, @types/bun, typescript
Why it matters. 3 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
cross-spawn, jose, zod, zod-to-json-schema, @biomejs/biome, @types/bun, @types/cross-spawn, postgres
Why it matters. 9 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:273
Proxies let you forward `adk` operations to a remote server. This is useful when you want a central server to manage refs and registries on behalf of multiple users (e.g., a team server that holds sha
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
examples/sample-server-registry/README.md:111
curl -X POST http://localhost:3000/oauth/token \
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:12
curl -fsSL https://registry.slash.com/adk/install.sh | sh
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:23
curl -fsSL https://registry.slash.com/adk/install.sh | sh

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha f8242792dff8full audit observations/trust-audit/mcp-server/slashfi__agents-sdk.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-12f8242792dff8BLOCKF53first audit
06

Questions

What tools does @slashfi/agents-sdk expose?

88 in total: 60 read-only, 19 that write, and 9 that can delete or overwrite (Config, delete_note, ref, registry, remove_ref). Every one is listed on this page with its risk.

Is @slashfi/agents-sdk safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (53/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 9 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does @slashfi/agents-sdk need?

It reads ADK_ENCRYPTION_KEY, ADK_TOKEN, API_KEY, ATLAS_TOKEN, LINEAR_API_KEY, ROOT_KEY and TEST_SECRET_VALUE 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 current is this page?

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

Advertisement