Skip to main content
Glama

HyperNatt Terminal

CI Glama x402-list Version License npm audit

Forced-order map for AI agents + Li.Fi cross-chain swap. Pay-per-call via x402.

Most agents (and most humans) only see classic public indicators. This MCP shows where leveraged liquidations stack — a market-structure layer those indicators do not expose. Read-only context. Your agent still decides.

Built by one person. Code is public. Backend is private. No custody. Not trade advice.

Full HyperNatt platform (vault, assistant): https://hypernatt.com — this repo is one agent-facing brick.

Public mirror synced from a private monorepo. History here is mirror commits.

Quick start (30 seconds)

No install for the hosted MCP. In Claude → Settings → Connectors → Add custom connector:

Field

Value

Name

HyperNatt Terminal

URL

https://hypernatt.com/mcp/protocol

Then ask:

Call get_agent_manifest, then get_liq_radar — where is the nearest liquidation cluster on the forced-order map? Do not treat this as a trade signal.

More clients (Cursor / Cline / Codex / Windsurf): docs/integrations.md.

Related MCP server: crypto-quant-signal-mcp

What HyperNatt Terminal gives your agent

A map of forced orders: where leveraged positions will be liquidated if price reaches them (clusters, OI build-up, observed liquidations).

This is market structure context, not a trade signal. It shows terrain so a sovereign trading agent can judge timing, sizing, and risk with more awareness than agents that only read RSI/MACD-style public feeds.

Your agent still decides. We show the terrain.

What your agent can do with this (honest scenarios)

Scenario 1 — Wait near the cluster

Price is approaching a dense liquidation zone. Your agent can wait for forced flow to print (real_liquidations), then reassess — without assuming a guaranteed reversal.

Scenario 2 — Size relative to distance

Cluster ~5% away vs ~0.5% away is a different risk parameter. Distance informs sizing or patience — it is not a prediction that the level will be hit.

Scenario 3 — After real liquidations, check OI

If price swept a zone and real liquidations spiked, compare with OI change. A large OI drop can mean forced flow is partly exhausted — still context, not an auto entry.

Glossary (short)

Term

Meaning

Cluster

Zone where leveraged positions may liquidate if mark reaches it. Not a TP.

Nearest vs largest

Closest to mark vs most estimated size in the ±10% window — different jobs.

Real vs estimated

real_liquidations = observed; liq_density clusters = modeled. Both labeled.

magnet.score

Directional density bias from OI / L-S / funding. Not a hit probability.

Live glossary + scenarios also ship on get_agent_manifestagent_interpretation_rules_v1.

What you get

Tool

Price

get_agent_manifest

Free — call first

get_liq_radar

$0.001 x402 (Base + Solana)

swap_via_nattswap

Free at MCP (you sign; gas + Li.Fi fee on-chain)

Whitelist get_liq_radar: BTC ETH SOL BNB XRP HYPE ZEC (omit symbol = BTC).

What we do NOT claim

We do not claim

What we do show

Generic Coinglass wrapper

Operator-shaped forced-order map for agents

Predictive Fuel Score / sweep classifier

Distance, size, OI, real liqs — labeled

Custody of keys or funds

Agent signs own txs

Trade advice / guaranteed edge

Read-only JSON context

More than 3 MCP tools

Exactly 3 · v2.7.0

Vault / /stats = Terminal P&L

Separate HyperNatt vault product

Independent security audit

Public code + SECURITY.md

Try it

curl -s https://hypernatt.com/api/m2m/agent/manifest
curl -i https://hypernatt.com/api/m2m/liq-radar

Step

Link

Quickstart

docs/quickstart.md

Integrations (5 clients + AgentKit)

docs/integrations.md

HL terrain example (read-only)

examples/hyperliquid/read_terrain.py

Honest interpret example

examples/liq_radar_interpret.py

CDP Bazaar checklist

docs/cdp-bazaar-checklist.md

Examples

examples/

Security

SECURITY.md

Buyer skill (use the MCP)

skills/hypernatt-terminal/SKILL.md

Seller skill (x402 hardening)

solana-x402-seller-security-skill

Tests

test/npm test

Changelog

CHANGELOG.md

MCP: https://hypernatt.com/mcp/protocol

For non-crypto users (x402 wallet)

If you do not already have a funded USDC wallet, install Coinbase Agentic Wallet MCP first (email/OTP + card onramp — no seed phrase):

npx @coinbase/payments-mcp

Docs: Agentic Wallet MCP. Then connect HyperNatt Terminal (https://hypernatt.com/mcp/protocol). Your agent can pay get_liq_radar ($0.001) automatically when it sees HTTP 402.

Optional heavy use (not required): swap-earned quota or $5/mo Agent Pass — see live pass_program / quota_program on the manifest.

License

MIT — see LICENSE.

Available Tools

3 tools
get_agent_manifestA

Start here (free): catalog of 3 terminal tools + value_proposition_v1 + use_scenarios_v1 + glossary_v1 under agent_interpretation_rules_v1. Then call get_liq_radar for the forced-order map.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoen or fr (default en)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden for behavioral disclosure. It notes the tool is 'free' and describes it as a catalog, implying a read-only informational nature, but it does not explicitly state that it has no side effects, or discuss permissions, rate limits, or return behavior. This is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the key directive 'Start here', and contains no filler. Every phrase contributes meaningful information (contents, next step), making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema and no annotations, the description does a good job of explaining what the tool returns by listing the manifest contents (catalog of 3 terminal tools, value_proposition_v1, use_scenarios_v1, glossary_v1) and the recommended follow-up. It is slightly cryptic with versioned names but sufficient for an agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the only parameter (locale) with its allowed values and default, and the description does not add any additional meaning. Since schema coverage is 100%, the baseline of 3 applies, and the description adds no extra value for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as an entry-point manifest cataloging 3 terminal tools plus supporting documents, distinguishing it from siblings by instructing to start here and then call get_liq_radar. It uses 'Start here' as the verb, which implies retrieval of a catalog, and lists specific contents, making the purpose clear even if not a conventional verb like 'get' or 'list'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('Start here') and provides a direct next step ('Then call get_liq_radar for the forced-order map'). This gives clear sequencing but does not mention when not to use it or alternatives like swap_via_nattswap, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_liq_radarA

Forced-order / liquidation map — magnet bias, OI build-up, L/S ratio, clusters above/below, real liqs 1h/24h. Whitelist BTC ETH SOL BNB XRP HYPE ZEC (omit symbol = BTC). Market structure classic public indicators do not show. USE WHEN: terrain / timing / sizing context. NOT a trade signal or Fuel Score. RETURNS: hypernatt_liq_radar_v2. COST: $0.001 x402 (Base or Solana). Side effects: none.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNoOptional crypto symbol (BTC ETH SOL BNB XRP HYPE ZEC). Default BTC when omitted.
x_paymentNoBase64 x402 USDC payment on Base (eip155:8453). Omit on first call to receive 402 payment instructions; retry with header after paying $0.001/call.
agent_walletNoOptional EVM wallet (0x + 40 hex). Skips x402 when swap-earned quota balance covers this tool's credit weight.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It discloses cost ($0.001 x402 Base or Solana), network options, default symbol behavior, whitelist constraints, return type, and explicitly states 'Side effects: none.' This is comprehensive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the tool's identity and payload, then systematically covers whitelist, use cases, exclusions, return, cost, and side effects. Every sentence provides distinct, non-redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description conveys the essence of the return (hypernatt_liq_radar_v2) and lists its components. It also covers cost, payment, and side effects. However, it doesn't detail the structure of the output or interpret the indicators, leaving some ambiguity for an agent, but overall sufficient for a data-retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and includes detailed descriptions for all three parameters. The description adds the cost amount and network flexibility ('Base or Solana') not present in schema, and reinforces symbol whitelist/default. However, agent_wallet parameter is not discussed in the description; schema already covers it, so the added value is moderate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a forced-order/liquidation map with specific deliverables (magnet bias, OI build-up, L/S ratio, clusters, real liqs). It distinguishes from siblings (get_agent_manifest, swap_via_nattswap) by stating it reveals market structure that 'classic public indicators do not show' and explicitly states it returns a specific radar (hypernatt_liq_radar_v2).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage context ('USE WHEN: terrain / timing / sizing context') and negation ('NOT a trade signal or Fuel Score'), but does not name alternative tools or explicitly compare with siblings. This is clear guidance but lacks explicit alternative references, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swap_via_nattswapA

Cross-chain token swap powered by Li.Fi across 70+ chains incl. Hyperliquid. USE WHEN: bridge, fund gas, treasury routing, or rebalance. RETURNS: Li.Fi route + execution_readiness + swap_actions_v1 + recommended_action. Prefer signing swap_actions_v1 in order. MCP free; on-chain swap costs gas + integrator fee. Side effects: MCP read-only until wallet signs.

ParametersJSON Schema
NameRequiredDescriptionDefault
toChainYesDestination Li.Fi chain id
toTokenYesDestination token contract address on toChain
slippageNoMax slippage percent (e.g. 0.5 for 0.5%)
fromChainYesSource Li.Fi chain id (e.g. 1 Ethereum, 8453 Base, 42161 Arbitrum)
fromTokenYesSource token contract address on fromChain
toAddressYesRecipient wallet 0x + 40 hex chars
fromAmountYesAmount in token smallest units (wei for 18-decimal tokens)
fromAddressYesSender wallet 0x + 40 hex chars

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: it returns a route and suggests actions, emphasizes 'MCP read-only until wallet signs', and notes gas and integrator fees. This gives the agent an accurate picture of side effects and costs, exceeding typical transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact but information-dense, with sections for purpose, use cases, return values, and side effects. Every sentence serves a distinct purpose, and there is no fluff or repetition. The structure is easy to parse despite the all-caps emphasis.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a swap tool with no output schema, the description covers essential context: what is returned (route, readiness, actions), how to proceed (sign actions in order), cost implications (free MCP, on-chain fees), and side effects (read-only until signing). This is complete enough for an agent to act safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so each parameter is already well-documented. The description adds high-level context (e.g., 'Prefer signing swap_actions_v1 in order') but does not elaborate on individual parameters. Baseline 3 is appropriate because the schema carries the burden, and the description provides no additional per-parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a 'cross-chain token swap powered by Li.Fi across 70+ chains', using a specific verb and resource. It also highlights Hyperliquid support, distinguishing it from siblings like get_liq_radar. This leaves no ambiguity about the tool's core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'USE WHEN' list provides concrete scenarios (bridge, fund gas, treasury routing, rebalance), giving clear context for when to invoke. It stops short of naming specific alternatives or when not to use, so it earns a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updatesv1.0.3
    • Removedclaim_ndat
    • Removedget_agent_balance
    • Removedget_btc_usdc_signal
    • Changedget_liq_radar3 fields changed
      • changedInput schema / properties / agent_wallet / description
        Previous value: -"Optional EVM wallet (0x + 40 hex). Skips x402 when swap-earned quota balance covers this tool's credit weight (2 for liq_radar/mm_trap_state)."New value: +"Optional EVM wallet (0x + 40 hex). Skips x402 when swap-earned quota balance covers this tool's credit weight."
      • addedInput schema / properties / symbol
        Added value: +{
        +  "description": "Optional crypto symbol (BTC ETH SOL BNB XRP HYPE ZEC). Default BTC when omitted.",
        +  "type": "string"
        +}
      • changedInput schema / properties / x_payment / description
        Previous value: -"Base64 x402 USDC payment on Base (eip155:8453). Omit on first call to receive 402 payment instructions; retry with header after paying $0.01/credit."New value: +"Base64 x402 USDC payment on Base (eip155:8453). Omit on first call to receive 402 payment instructions; retry with header after paying $0.001/call."
    • Removedget_mm_hunt_score
    • Removedget_mm_trap_state
    • Removedget_natt_performance
    • Removedget_referral_link
    • Removedget_similarity_match
    • Removedget_vault_proof
    • Removedregister_nattswap_reward
    • Removedswap_quote
  2. 11 tool updatesv1.0.2
    • Changedclaim_ndat2 fields changed
      • changedInput schema / properties / amount / description
        Previous value: -"NDAT amount; omit to claim all pending"New value: +"Optional NDAT amount to claim. Omit or leave unset to claim all pending_ndat from get_agent_balance."
      • changedInput schema / properties / wallet / description
        Previous value: -"Agent EVM address"New value: +"Required. Wallet that earned NDAT: 0x + 40 hex chars on Base."
    • Changedget_agent_balance1 field changed
      • changedInput schema / properties / wallet / description
        Previous value: -"Agent EVM address"New value: +"Required. Agent EVM address on Base: 0x followed by 40 hexadecimal characters (checksum optional)."
    • Changedget_btc_usdc_signal1 field changed
      • changedInput schema / properties / agent_wallet / description
        Previous value: -"Optional EVM wallet (0x…). Beta-grandfathered wallets skip x402 payment."New value: +"Optional EVM wallet (0x + 40 hex). Skips x402 when swap-earned quota covers this tool's credit weight."
    • Changedget_liq_radar2 fields changed
      • changedInput schema / properties / agent_wallet / description
        Previous value: -"Optional EVM wallet (0x…). Beta-grandfathered wallets skip x402."New value: +"Optional EVM wallet (0x + 40 hex). Skips x402 when swap-earned quota balance covers this tool's credit weight (2 for liq_radar/mm_trap_state)."
      • changedInput schema / properties / x_payment / description
        Previous value: -"Optional x402 payment payload (base64 JSON). Omit to receive 402 payment instructions."New value: +"Base64 x402 USDC payment on Base (eip155:8453). Omit on first call to receive 402 payment instructions; retry with header after paying $0.01/credit."
    • Changedget_mm_hunt_score1 field changed
      • changedInput schema / properties / agent_wallet / description
        Previous value: -"Optional EVM wallet (0x…). Beta-grandfathered wallets skip x402."New value: +"Optional EVM wallet (0x + 40 hex). Skips x402 when quota covers credit weight."
    • Changedget_mm_trap_state2 fields changed
      • changedInput schema / properties / agent_wallet / description
        Previous value: -"Optional EVM wallet (0x…). Beta-grandfathered wallets skip x402."New value: +"Optional EVM wallet (0x + 40 hex). Skips x402 when swap-earned quota balance covers this tool's credit weight (2 for liq_radar/mm_trap_state)."
      • changedInput schema / properties / x_payment / description
        Previous value: -"Optional x402 payment payload (base64 JSON). Omit to receive 402 payment instructions."New value: +"Base64 x402 USDC payment on Base (eip155:8453). Omit on first call to receive 402 payment instructions; retry with header after paying $0.01/credit."
    • Changedget_referral_link1 field changed
      • changedInput schema / properties / referrer / description
        Previous value: -"Referrer agent EVM address"New value: +"Referrer agent EVM address 0x + 40 hex chars on Base"
    • Changedget_similarity_match1 field changed
      • changedInput schema / properties / agent_wallet / description
        Previous value: -"Optional EVM wallet (0x…). Beta-grandfathered wallets skip x402."New value: +"Optional EVM wallet (0x + 40 hex). Skips x402 when quota covers credit weight."
    • Changedregister_nattswap_reward2 fields changed
      • changedInput schema / properties / agentAddress / description
        Previous value: -"Agent wallet that executed the swap"New value: +"Agent wallet 0x + 40 hex that executed or benefits from the swap"
      • changedInput schema / properties / txHash / description
        Previous value: -"Source chain transaction hash"New value: +"Confirmed swap transaction hash on source chain (0x…)"
    • Changedswap_quote8 fields changed
      • changedInput schema / properties / fromAddress / description
        Previous value: -"Sender wallet"New value: +"Sender wallet 0x + 40 hex chars"
      • changedInput schema / properties / fromAmount / description
        Previous value: -"Amount in token smallest units"New value: +"Amount in token smallest units (wei for 18-decimal tokens)"
      • changedInput schema / properties / fromChain / description
        Previous value: -"Source chain id"New value: +"Source Li.Fi chain id (e.g. 1 Ethereum, 8453 Base, 42161 Arbitrum)"
      • changedInput schema / properties / fromToken / description
        Previous value: -"Source token address"New value: +"Source token contract address on fromChain"
      • changedInput schema / properties / slippage / description
        Previous value: -"Slippage percent"New value: +"Max slippage percent (e.g. 0.5 for 0.5%)"
      • changedInput schema / properties / toAddress / description
        Previous value: -"Recipient wallet"New value: +"Recipient wallet 0x + 40 hex chars"
      • changedInput schema / properties / toChain / description
        Previous value: -"Destination chain id"New value: +"Destination Li.Fi chain id"
      • changedInput schema / properties / toToken / description
        Previous value: -"Destination token address"New value: +"Destination token contract address on toChain"
    • Changedswap_via_nattswap8 fields changed
      • changedInput schema / properties / fromAddress / description
        Previous value: -"Sender wallet"New value: +"Sender wallet 0x + 40 hex chars"
      • changedInput schema / properties / fromAmount / description
        Previous value: -"Amount in token smallest units"New value: +"Amount in token smallest units (wei for 18-decimal tokens)"
      • changedInput schema / properties / fromChain / description
        Previous value: -"Source chain id"New value: +"Source Li.Fi chain id (e.g. 1 Ethereum, 8453 Base, 42161 Arbitrum)"
      • changedInput schema / properties / fromToken / description
        Previous value: -"Source token address"New value: +"Source token contract address on fromChain"
      • changedInput schema / properties / slippage / description
        Previous value: -"Slippage percent"New value: +"Max slippage percent (e.g. 0.5 for 0.5%)"
      • changedInput schema / properties / toAddress / description
        Previous value: -"Recipient wallet"New value: +"Recipient wallet 0x + 40 hex chars"
      • changedInput schema / properties / toChain / description
        Previous value: -"Destination chain id"New value: +"Destination Li.Fi chain id"
      • changedInput schema / properties / toToken / description
        Previous value: -"Destination token address"New value: +"Destination token contract address on toChain"
  3. 6 tool updatesv1.0.1
    • Changedget_btc_usdc_signal1 field changed
      • addedInput schema / properties / agent_wallet
        Added value: +{
        +  "description": "Optional EVM wallet (0x…). Beta-grandfathered wallets skip x402 payment.",
        +  "type": "string"
        +}
    • Addedget_liq_radar
    • Changedget_mm_hunt_score1 field changed
      • addedInput schema / properties / agent_wallet
        Added value: +{
        +  "description": "Optional EVM wallet (0x…). Beta-grandfathered wallets skip x402.",
        +  "type": "string"
        +}
    • Addedget_mm_trap_state
    • Addedget_natt_performance
    • Changedget_similarity_match1 field changed
      • addedInput schema / properties / agent_wallet
        Added value: +{
        +  "description": "Optional EVM wallet (0x…). Beta-grandfathered wallets skip x402.",
        +  "type": "string"
        +}
  4. 11 tool updatesv1.0.0
    • First observedclaim_ndat
    • First observedget_agent_balance
    • First observedget_agent_manifest
    • First observedget_btc_usdc_signal
    • First observedget_mm_hunt_score
    • First observedget_referral_link
    • First observedget_similarity_match
    • First observedget_vault_proof
    • First observedregister_nattswap_reward
    • First observedswap_quote
    • First observedswap_via_nattswap

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: the manifest is a starting guide, swap_via_nattswap handles token exchanges, and get_liq_radar provides market liquidation data. There is no overlap or ambiguity between them.

Naming Consistency4/5

Names mostly follow a verb_noun pattern (get_agent_manifest, get_liq_radar) with one deviation (swap_via_nattswap). The style is consistent with underscores and lowercase, so it remains readable and predictable.

Tool Count5/5

With 3 tools, the server is well-scoped for a specialized terminal. Each tool serves a necessary role: discovery, data, and action, and the count is within the ideal 3-15 range.

Completeness4/5

The set offers a complete lifecycle for a terminal: a manifest to start, a data tool for market context, and an action tool for swaps. Minor gaps like balance checks or additional market data are possible but not essential for the stated purpose.

Maintenance

ActivityActive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DIALLOUBE-RESEARCH/hypernatt-terminal'

If you have feedback or need assistance with the MCP directory API, please join our Discord server