Syenite
REMOTE · SYENITE.AI · 2 COMPONENTS · SCANNED AUG 3
DeFi interface for AI agents: swap, bridge, yield, lending. Live at syenite.ai.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (lending.supply). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 10579 tokens (~229/item across 46 items; 46 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 98% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · syenite.ai
claude mcp add --transport http syenite-ai-syenite https://syenite.ai/mcp
[mcp_servers.syenite-ai-syenite] url = "https://syenite.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"syenite-ai-syenite": {
"type": "remote",
"url": "https://syenite.ai/mcp",
"enabled": true
}
}
} openclaw mcp add syenite-ai-syenite --url https://syenite.ai/mcp --transport streamable-http
mcp_servers:
syenite-ai-syenite:
url: "https://syenite.ai/mcp" {
"mcpServers": {
"syenite-ai-syenite": {
"type": "http",
"url": "https://syenite.ai/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 63
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://syenite.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=syenite.ai | CN=WE1,O=Google Trust Services,C=US | 12 Jul 2026 | 10 Oct 2026 | ECDSA 256 | ECDSA-SHA256 | 8d2299d13d1d6ce131afd045f47a0d1 |
| SANs: syenite.ai | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
DNSSEC insecure
Validation of syenite.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| syenite.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://syenite.ai/mcp | Verified | 200 | |
| http (plaintext) | http://syenite.ai/mcp | HTTPS enforced | 301 | https://syenite.ai/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
alerts.check ~147
Triggers an immediate evaluation of all registered watches and returns any unacknowledged alerts grouped by severity (critical or warning). Call this to poll for fired conditions without waiting for a webhook — it is safe to call repeatedly and will re-evaluate all watches on each call. Optionally pass watchId to filter results to a single watch; pass acknowledge: true with a watchId to clear that watch's alerts after reading. Returns alert count, severity breakdown, and per-alert details including watch type, message, and supporting data. Does not modify watch configuration.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge | boolean | — | Mark returned alerts as acknowledged |
| watchId | string | — | Filter alerts for a specific watch ID |
| Name | Type | Req | Description |
|---|---|---|---|
| alertCount | number | yes | — |
| alerts | array | yes | — |
| critical | number | yes | — |
| timestamp | string | yes | — |
| warnings | number | yes | — |
No examples provided.
alerts.list ~79
Returns all currently registered watches with their full configuration, type (lending, rate, carry, yield, prediction), threshold parameters, and last check timestamp. Use this to audit active monitors before creating new ones or to retrieve watch IDs needed for alerts.remove. Takes no parameters and never triggers a live check — for current alert state, call alerts.check instead.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| timestamp | string | yes | — |
| watchCount | number | yes | — |
| watches | array | yes | — |
No examples provided.
alerts.remove ~91
Removes a registered watch by its ID, stopping all monitoring and alert generation for that watch immediately and permanently. Requires the watchId returned when the watch was created (or retrieved via alerts.list). Returns success: true if the watch was found and removed, or false if the ID was not found. Does not affect other watches or their accumulated alerts.
| Name | Type | Req | Description |
|---|---|---|---|
| watchId | string | yes | ID of the watch to remove |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | — |
| success | boolean | yes | — |
No examples provided.
alerts.watch ~622
Registers a persistent background monitor that fires alerts when user-defined thresholds are crossed, persisting across server restarts. Supports four watch types: lending (monitors a wallet's health factor on Aave, Morpho, Spark, or Compound — fires when health factor drops below healthFactorThreshold), rate (monitors borrow/supply APY and pool utilization for a collateral/borrowAsset pair — fires on APY crossings via rateBorrowThreshold/rateSupplyThreshold or utilization via rateUtilizationThreshold), carry (monitors the net spread between best supply APY and cheapest borrow rate — fires when spread exceeds carryThreshold), and yield (monitors best available yield for an asset — fires when APY crosses yieldApyThreshold in the specified direction). Provide webhookUrl to receive POST payloads when alerts fire; otherwise poll alerts.check to retrieve unacknowledged alerts. Does not execute trades — alert data must be acted on by the agent. Returns a watch ID needed for alerts.remove.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | — | EVM address to monitor (lending watches) |
| carryBorrowAsset | string | — | Asset you borrow, e.g. USDC (carry) |
| carryCollateral | string | — | Collateral you post to borrow, e.g. wBTC (carry) |
| carrySupplyAsset | string | — | Asset you supply — defaults to carryBorrowAsset (carry) |
| carryThreshold | number | — | Minimum net spread % to fire carry_opportunity (carry) |
| chain | string | — | Chain filter (lending) |
| healthFactorThreshold | number | — | Alert threshold (lending, default 1.5) |
| protocol | string | — | Protocol filter (lending) |
| rateBorrowAsset | string | — | Borrow asset, e.g. USDC (rate, default USDC) |
| rateBorrowThreshold | number | — | Borrow APY % threshold (rate) |
| rateChain | string | — | Chain filter (rate) |
| rateCollateral | string | — | Collateral asset, e.g. wBTC (rate) |
| rateDirection | string | — | APY threshold direction (rate, default above) |
| rateProtocol | string | — | Protocol filter (rate) |
| rateSupplyThreshold | number | — | Supply APY % threshold (rate) |
| rateUtilizationThreshold | number | — | Utilization % threshold — fires rate_utilization; critical at ≥95% (rate) |
| type | string | — | Watch type: lending (health factor), rate (APY/utilization), carry (net spread), yield (best APY) |
| webhookUrl | string | — | HTTP(S) URL to POST alerts to in real-time |
| yieldApyThreshold | number | — | APY % threshold (yield) |
| yieldAsset | string | — | Asset to watch, e.g. ETH, USDC, stables (yield) |
| yieldChains | array | — | Chains to include (yield) |
| yieldDirection | string | — | APY threshold direction (yield, default above) |
| yieldRisk | string | — | Max risk level (yield) |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | — |
| usage | string | yes | — |
| watch | object | yes | — |
No examples provided.
find.strategy ~312
Orchestrates a parallel scan across yield opportunities, carry trades, lending leverage, cross-chain rate arbitrage, and prediction market signals to surface the best strategies for a given asset and risk profile. Call this as the first step when an agent has capital to deploy and needs ranked recommendations — it fans out to `yield.opportunities`, `carry.screen`, `gas.estimate`, and optionally `prediction.signals` in one call. Provide `asset` (e.g. "WETH", "USDC", "WBTC"), optionally `amount` in USD (used for return estimates), `riskTolerance` ("low", "medium", or "high"), `chain`, and `includePrediction` (default true). Returns strategies ranked by risk-adjusted return with category ("yield", "carry", "leverage", "arbitrage", "prediction"), expected APY, execution steps, and the exact Syenite tool names to call next for each strategy; does not execute any transaction.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | — | Amount in USD to deploy (for return calculations) |
| asset | string | yes | Asset you have or want to deploy: "ETH", "WETH", "wBTC", "USDC", "USDT", etc. |
| chain | string | — | Chain preference |
| includePrediction | boolean | — | Include prediction market signals in strategy search |
| riskTolerance | string | — | Maximum risk level: low (yield only), medium (carry + arb), high (leverage + prediction) |
| Name | Type | Req | Description |
|---|---|---|---|
| note | string | yes | — |
| query | object | yes | — |
| strategies | array | yes | — |
| summary | object | yes | — |
| timestamp | string | yes | — |
No examples provided.
gas.estimate ~245
Returns current gas prices and estimated costs for common DeFi operations across EVM chains (Ethereum, Arbitrum, Base, BNB Chain) and Solana priority fees, allowing agents to confirm a wallet holds sufficient native gas and to select the cheapest chain for an operation. Covered operations: transfer, erc20_transfer, erc20_approve, swap, bridge, lending_supply, lending_borrow, contract_register — each reported with gas units, cost in native token, and approximate USD cost at current price. For Solana, returns recent prioritization fees in micro-lamports per compute unit (min, median, p75, max) sampled from the last few slots. Optionally filter by chains (array) and operations (array of operation names); defaults to all chains and all operations. Identifies the cheapest chain per operation. USD estimates use approximate native token prices and are indicative, not exact.
| Name | Type | Req | Description |
|---|---|---|---|
| chains | array | — | Chains to check (defaults to all) |
| operations | array | — | Operation types to estimate: transfer, erc20_transfer, swap, bridge, erc20_approve, lending_supply, lending_borrow, contract_register |
| Name | Type | Req | Description |
|---|---|---|---|
| availableOperations | array | yes | — |
| chainsQueried | array | yes | — |
| cheapestChain | object | yes | Cheapest chain for each operation type |
| estimates | array | yes | — |
| note | string | yes | — |
| solana | object | — | Present when chains includes 'solana' — prioritization fees in µLamports/CU from getRecentPrioritizationFees |
| timestamp | string | yes | — |
No examples provided.
kalshi.book ~157
Fetches the current order book for a specific Kalshi market by ticker, returning YES and NO bid levels with sizes in contracts, mid-price, spread in cents and basis points, and total depth on each side. Use this to assess execution quality before sizing a position — wide spreads indicate higher edge for makers. Requires ticker (e.g. "KXBTC-25DEC31-T100000"), obtained from kalshi.trending or kalshi.search. Kalshi prices are in cents (0–99); a YES bid at 45 means you pay 45¢ per contract to win $1 if YES resolves.
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | Market ticker (e.g. "KXBTC-25DEC31-T100000") |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | — |
| impliedProbabilityPct | number | — | — |
| noAsks | array | — | — |
| note | string | — | — |
| spreadBps | number | — | — |
| spreadCents | number | — | — |
| ticker | string | yes | — |
| timestamp | string | yes | — |
| yesAskDepthContracts | number | — | — |
| yesBidDepthContracts | number | — | — |
| yesBids | array | — | — |
| yesMidCents | number | — | — |
No examples provided.
kalshi.market ~161
Provides a comprehensive deep-dive on a single Kalshi market by ticker, returning the question, current YES/NO prices in cents, implied probability, 24h and 7d price history stats (open, close, min, max, change), volume in contracts with approximate USD value, liquidity, order book depth, bid-ask spread, one-sided flow direction, resolution rules, and time remaining until close. Use this after kalshi.trending or kalshi.search to fully evaluate a market before taking a position. Requires ticker (e.g. "KXBTC-25DEC31-T100000"). Does not place orders.
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | Market ticker (e.g. "KXBTC-25DEC31-T100000") |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | — |
| liquidity | object | — | — |
| market | object | — | — |
| note | string | — | — |
| priceHistory | object | — | — |
| siblings | array | — | — |
| source | string | — | — |
| ticker | string | — | Present when the market was not found |
| timestamp | string | yes | — |
| volume | object | — | — |
No examples provided.
kalshi.search ~152
Searches open Kalshi events and markets by keyword, filtering against event titles, tickers, series names, and market subtitles. Use this when looking for a specific topic (elections, crypto price levels, economic data, sports). Requires query (search term); optionally pass limit (1–50, default 25). Returns tickers and market details needed for kalshi.market and kalshi.book. Note: Kalshi has no server-side text search — this filters a large fetch of open events client-side, so very rare topics may not appear.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results (default 25, max 50) |
| query | string | yes | Search term (topic, ticker, or keyword) |
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | yes | — |
| query | string | yes | — |
| resultCount | number | yes | — |
| source | string | yes | — |
| timestamp | string | yes | — |
No examples provided.
kalshi.signals ~247
Scans open Kalshi events and returns ranked actionable signals across five categories: wide_spread (bid-ask gap above 4¢ with meaningful liquidity — market-making opportunity), extreme_probability (YES ask above 92¢ or below 8¢ with volume — contrarian or long-shot play), high_volume (volume_24h above 10,000 contracts — active price discovery), near_resolution (market closing within 48 hours — time-sensitive opportunity), and mispriced (mutually exclusive event markets don't sum to ~100¢ — arbitrage opportunity). Returns each signal with strength (0–100), affected market ticker, and a suggested action. Optionally filter by minStrength (0–100), types (array of signal type strings), and limit (default 20, max 50). Signals are heuristic — verify market fundamentals before trading.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max signals to return (default 20, max 50) |
| minStrength | number | — | Minimum signal strength to include (0–100, default 0) |
| types | array | — | Filter by signal type: wide_spread, extreme_probability, high_volume, near_resolution, mispriced |
| Name | Type | Req | Description |
|---|---|---|---|
| marketsScanned | number | yes | — |
| note | string | yes | — |
| signalCount | number | yes | — |
| signalTypes | object | yes | — |
| signals | array | yes | — |
| source | string | yes | — |
| timestamp | string | yes | — |
| typeCounts | object | yes | — |
No examples provided.
kalshi.trending ~154
Fetches the top open events on Kalshi ranked by recency, returning event titles, tickers, market questions, current YES/NO prices in cents, implied probability, volume in contracts, and liquidity. Kalshi is a US-regulated prediction market exchange — markets settle to $1 (YES) or $0 (NO). Use this as the starting point for Kalshi market discovery before calling kalshi.market, kalshi.book, or kalshi.signals. Optionally pass limit (1–50, default 25). Prices are in cents where 45¢ means ~45% implied probability of YES.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Number of events to return (default 25, max 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| eventCount | number | yes | — |
| events | array | yes | — |
| note | string | yes | — |
| source | string | yes | — |
| timestamp | string | yes | — |
No examples provided.
lending.borrow ~202
Generates unsigned variable-rate borrow transaction calldata for Aave v3 (Ethereum, Arbitrum, Base) or Spark (Ethereum). Call `lending.risk.assess` before this tool to confirm the target LTV is safe and the market has sufficient liquidity. Provide `protocol`, `chain`, `asset` to borrow (e.g. "USDC"), human-readable `amount`, and `onBehalfOf` wallet address; collateral must already be supplied. Returns one transaction request (no approval needed for borrows); Syenite never holds private keys and no funds move until the caller signs and broadcasts.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Borrow amount in human-readable units |
| asset | string | yes | Asset to borrow: "USDC", "USDT", "DAI", "GHO" |
| chain | string | — | Chain |
| onBehalfOf | string | yes | Address with collateral deposited |
| protocol | string | — | Lending protocol |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| amount | string | yes | — |
| amountWei | string | yes | — |
| asset | string | yes | — |
| chain | string | yes | — |
| execution | object | yes | — |
| interestRateMode | string | yes | — |
| note | string | yes | — |
| pool | string | yes | — |
| protocol | string | yes | — |
| verification | string | yes | — |
No examples provided.
lending.market.overview ~202
Returns an aggregated overview of DeFi lending market conditions across Aave v3, Compound V3, Fluid, Morpho Blue, and Spark on Ethereum, Arbitrum, and Base. Use this for a macro view of the lending landscape before calling `lending.rates.query` for per-market detail — it surfaces cross-protocol totals for supply, borrow, utilization, and available liquidity alongside borrow and supply APY ranges per protocol. Pass `collateral` (e.g. "ETH", "BTC", or "all") to scope the market scan; optionally pass `chain` to restrict to one network. Returns cross-protocol summary (lowest borrow APY, highest supply APY, total available liquidity) and per-protocol breakdowns including individual market rows; does not execute any transaction.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | — | Chain to query. Defaults to all supported chains. |
| collateral | string | — | Filter by collateral asset, or "all" |
| Name | Type | Req | Description |
|---|---|---|---|
| crossProtocol | object | yes | — |
| protocols | array | yes | — |
| query | object | yes | — |
| timestamp | string | yes | — |
No examples provided.
lending.position.monitor ~227
Reads the live health of any EVM wallet's lending positions across Aave v3, Morpho Blue, Compound V3, and Spark on Ethereum, Arbitrum, and Base — no authentication required. Call this before withdrawing collateral or after price moves to verify health factor and liquidation distance; positions with health factor below 1.5 trigger an explicit warning in the response. Provide the 0x-prefixed EVM `address` to inspect; optionally filter by `protocol` ("aave-v3", "morpho-blue", "compound-v3", or "spark") and `chain` to reduce response size. Returns per-position: collateral asset and USD value, debt asset and USD value, current LTV, health factor, liquidation price, percentage price drop to liquidation, borrow APY, and estimated annual interest cost; does not execute any transaction.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | EVM address to check (works on all supported chains) |
| chain | string | — | Chain to query. Defaults to all supported chains. |
| protocol | string | — | Protocol filter |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | — |
| positionCount | number | yes | — |
| positions | array | yes | — |
| timestamp | string | yes | — |
| warning | string | — | Present when positions are approaching liquidation |
No examples provided.
lending.rates.query ~317
Returns real-time borrow APY, supply APY, available liquidity, utilization, max LTV, liquidation threshold, and liquidation penalty for every active lending market across Aave v3, Compound V3, Fluid, Morpho Blue, and Spark on Ethereum, Arbitrum, and Base, plus Kamino and MarginFi on Solana. Call this before any borrow or supply decision to identify the cheapest borrow or the highest supply rate for a given asset pair; the response includes a `bestBorrowRate` summary field for quick comparison. Pass `collateral` (e.g. "WBTC", "ETH", "wstETH") and `borrowAsset` (e.g. "USDC", "DAI") to filter by pair; pass `chain` ("ethereum", "arbitrum", "base", "solana", or "all") to restrict scope — omitting either returns all markets. This tool is read-only and executes no transactions; APYs include compounding and are sourced live from on-chain data.
| Name | Type | Req | Description |
|---|---|---|---|
| borrowAsset | string | — | Asset to borrow: "USDC", "USDT", "DAI", "GHO" |
| chain | string | — | Chain to query. Defaults to all supported chains. |
| collateral | string | — | Collateral asset or category: "wBTC", "tBTC", "cbBTC", "WETH", "wstETH", "rETH", "cbETH", "weETH", "BTC", "ETH", or "all" |
| Name | Type | Req | Description |
|---|---|---|---|
| bestBorrowRate | — | yes | Best rate found, or null if no markets match |
| markets | array | yes | All matching lending markets, sorted by borrow APY |
| note | string | yes | — |
| query | object | yes | — |
| timestamp | string | yes | — |
No examples provided.
lending.repay ~202
Generates unsigned ERC-20 approval and variable-rate repay transaction calldata for Aave v3 (Ethereum, Arbitrum, Base) or Spark (Ethereum). Use this to reduce or eliminate an outstanding borrow; pass amount "max" (uint256 max) to repay the entire debt balance, or a specific human-readable amount for partial repayment. Provide `protocol`, `chain`, `asset` being repaid, `amount`, and `onBehalfOf` wallet address. Returns the ERC-20 approval transaction (submit first) and the repay transaction; Syenite never holds private keys and no funds move until the caller signs and broadcasts.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Repay amount in human-readable units, or "max" for full repayment |
| asset | string | yes | Asset to repay |
| chain | string | — | Chain |
| onBehalfOf | string | yes | Address whose debt to repay |
| protocol | string | — | Lending protocol |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| amount | string | yes | — |
| amountWei | string | yes | — |
| approvalRequired | — | — | Present when token approval is required before the action |
| asset | string | yes | — |
| chain | string | yes | — |
| execution | object | yes | — |
| interestRateMode | string | yes | — |
| note | string | yes | — |
| pool | string | yes | — |
| protocol | string | yes | — |
| verification | string | yes | — |
No examples provided.
lending.risk.assess ~333
Evaluates the risk of a proposed lending position before it is opened — fetching live rates, current asset price, and available liquidity from Aave v3, Morpho Blue, and Spark to compute position-specific risk metrics. Call this before `lending.supply` and `lending.borrow` whenever an agent is about to open or resize a collateralized borrow; it surfaces the protocol with the lowest borrow APY that accepts the target LTV. Provide `collateral` asset symbol (e.g. "wBTC", "wstETH"), `collateralAmount` (token units), `targetLTV` (percentage, e.g. 60), and optionally `borrowAsset` (default "USDC") and `protocol` preference ("aave-v3", "spark", "morpho-blue", or "best"). Returns a risk score (1–10), liquidation price and distance, liquidation penalty in USD, position sizing warnings if the borrow is large relative to pool liquidity, collateral-specific depeg notes, protocol oracle and governance notes, estimated annual borrow cost, and an actionable plain-language summary; does not execute any transaction.
| Name | Type | Req | Description |
|---|---|---|---|
| borrowAsset | string | — | Asset to borrow |
| collateral | string | yes | Collateral asset: "wBTC", "tBTC", "cbBTC", "WETH", "wstETH", "rETH", "cbETH", "weETH" |
| collateralAmount | number | yes | Amount of collateral |
| protocol | string | — | Protocol preference |
| targetLTV | number | yes | Desired LTV percentage (1-99) |
| Name | Type | Req | Description |
|---|---|---|---|
| alternativeMarkets | array | yes | — |
| assessment | object | yes | — |
| query | object | yes | — |
| timestamp | string | yes | — |
No examples provided.
lending.supply ~290
Generates unsigned ERC-20 approval and pool supply transaction calldata for depositing an asset into Aave v3 (Ethereum, Arbitrum, Base) or Spark (Ethereum). Call this when the agent has decided to supply collateral or earn supply APY on a lending protocol; precede it with `lending.rates.query` to confirm the target protocol and chain. Provide `protocol` ("aave-v3" or "spark"), `chain`, `asset` symbol (e.g. "WETH", "USDC"), human-readable `amount`, and `onBehalfOf` wallet address. Returns two transaction requests — the ERC-20 approval must be submitted first, then the supply call — and a verification reminder to use `tx.receipt` and `lending.position.monitor` after submission. Syenite never holds private keys; no funds move until the caller signs and broadcasts.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount in human-readable units (e.g. '1000' for 1000 USDC) |
| asset | string | yes | Token to supply: "USDC", "WETH", "wBTC", "tBTC", "DAI", etc. |
| chain | string | — | Chain where the pool lives |
| onBehalfOf | string | yes | Address that will receive the aToken (usually your own address) |
| protocol | string | — | Lending protocol |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| amount | string | yes | — |
| amountWei | string | yes | — |
| approvalRequired | — | — | Present when token approval is required before the action |
| asset | string | yes | — |
| chain | string | yes | — |
| execution | object | yes | — |
| note | string | yes | — |
| pool | string | yes | — |
| protocol | string | yes | — |
| verification | string | yes | — |
No examples provided.
lending.withdraw ~179
Generates unsigned withdraw transaction calldata to reclaim a supplied asset from Aave v3 (Ethereum, Arbitrum, Base) or Spark (Ethereum). Call `lending.position.monitor` first to confirm the withdrawal will not push an outstanding borrow position toward liquidation. Provide `protocol`, `chain`, `asset`, a human-readable `amount` or the string "max" to withdraw the full supplied balance, and `to` as the recipient address. Returns one transaction request; Syenite never holds private keys and no funds move until the caller signs and broadcasts.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount in human-readable units, or "max" to withdraw all |
| asset | string | yes | Asset to withdraw |
| chain | string | — | Chain |
| protocol | string | — | Lending protocol |
| to | string | yes | Recipient address for withdrawn tokens |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| amount | string | yes | — |
| asset | string | yes | — |
| chain | string | yes | — |
| execution | object | yes | — |
| note | string | yes | — |
| pool | string | yes | — |
| protocol | string | yes | — |
| verification | string | yes | — |
No examples provided.
metamorpho.supply ~264
Builds unsigned ERC-20 approval and ERC-4626 deposit transaction calldata for supplying assets into a MetaMorpho curated vault on Ethereum, Base, Arbitrum, or Optimism. Call this after selecting a vault from `yield.opportunities` (category "vault") or `yield.assess`; use `vault` to target by vault address or a name/curator fragment (e.g. "Steakhouse", "Gauntlet"). Provide `vault` identifier, human-readable `amount`, and `receiver` wallet address; the tool resolves vault address, underlying asset, and decimals automatically and errors with suggestions if the vault name is ambiguous. Returns the ERC-20 approval transaction (submit first) and the deposit transaction; shares are credited to `receiver` at the vault's current exchange rate. Syenite never holds private keys; no funds move until the caller signs and broadcasts both transactions.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount to deposit in human units (e.g. '1000' for 1000 USDC) |
| receiver | string | yes | Address that receives the vault shares |
| vault | string | yes | Target MetaMorpho vault — address (0x...) or name fragment (e.g. "Steakhouse USDC") |
| Name | Type | Req | Description |
|---|---|---|---|
| amount | object | yes | — |
| approvalRequired | object | yes | — |
| chain | string | yes | — |
| note | string | yes | — |
| product | string | yes | — |
| protocol | string | yes | — |
| timestamp | string | yes | — |
| transactionRequest | object | yes | — |
| vault | object | yes | — |
No examples provided.
metamorpho.withdraw ~212
Builds an unsigned ERC-4626 redeem transaction calldata to withdraw assets from a MetaMorpho vault on Ethereum, Base, Arbitrum, or Optimism. Call this when an agent needs to exit a MetaMorpho vault position; no approval transaction is required for redemption. Provide `vault` identifier (address or name fragment), `shares` as a human-readable amount or the string "max" to redeem the full balance, `receiver` address to receive underlying assets, and `owner` address whose shares will be burned. Returns the redeem transaction request; withdrawal is subject to available liquidity in the underlying Morpho Blue markets and Syenite never holds private keys.
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | yes | Owner of the shares (must have authorized the caller if different) |
| receiver | string | yes | Address that receives the withdrawn underlying |
| shares | string | yes | Share amount in human units, or 'max' to redeem all |
| vault | string | yes | MetaMorpho vault — address or name fragment |
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | — |
| note | string | yes | — |
| product | string | yes | — |
| protocol | string | yes | — |
| shares | object | yes | — |
| timestamp | string | yes | — |
| transactionRequest | object | yes | — |
| vault | object | yes | — |
No examples provided.
prediction.arbitrage ~188
Scans trending markets on both Polymarket and Kalshi simultaneously, matches markets covering the same underlying question, and surfaces pairs where implied probabilities diverge by more than a threshold. A divergence of 5pp or more suggests one exchange is mispriced or lagging. Returns pairs ranked by divergence, each showing the YES probability on each exchange, which side is higher, and the spread in percentage points. Optionally pass minDivergencePp (default 3) to filter only meaningful gaps, and limit (default 20, max 50). Note: cross-exchange arb requires accounts on both platforms and faces execution risk — prices may converge before orders fill.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max opportunities to return (default 20, max 50) |
| minDivergencePp | number | — | Minimum probability divergence in percentage points to surface (default 3) |
| Name | Type | Req | Description |
|---|---|---|---|
| arbOpportunities | number | yes | — |
| marketsScanned | object | yes | — |
| minDivergencePp | number | yes | — |
| note | string | yes | — |
| opportunities | array | yes | — |
| timestamp | string | yes | — |
No examples provided.
prediction.book ~140
Fetches the current CLOB order book for a specific Polymarket outcome token, returning top bid and ask levels with sizes, mid-price, spread in both decimal and basis points, and total bid/ask depth in USD. Use this to assess execution quality and market-making opportunities before placing an order — wide spreads indicate higher edge for makers; shallow depth signals potential slippage on larger size. Requires tokenId, which is obtained from the clobTokenIds field in prediction.trending or prediction.search results. Does not place or modify orders.
| Name | Type | Req | Description |
|---|---|---|---|
| tokenId | string | yes | Polymarket outcome token ID (from prediction.trending or prediction.search results) |
| Name | Type | Req | Description |
|---|---|---|---|
| askDepthUSD | number | — | — |
| asks | array | — | — |
| bidDepthUSD | number | — | — |
| bids | array | — | — |
| error | string | — | — |
| midPrice | number | — | — |
| note | string | — | — |
| spread | number | — | — |
| spreadBps | number | — | Spread in basis points |
| timestamp | string | yes | — |
| tokenId | string | yes | — |
No examples provided.
prediction.compare ~216
Searches both Polymarket and Kalshi for the same underlying question and returns a side-by-side comparison of implied probabilities, volume, liquidity, and spread. Use this to see where a question is listed on each exchange, whether prices agree, and which venue has better liquidity. Requires query (the topic to search — e.g. "Trump tariffs", "Bitcoin 100k", "Fed rate cut"). Optionally pass minOverlapPct (0–100, default 20) to control how strictly market titles must match across exchanges — lower values return more speculative matches. Returns matched pairs ranked by match confidence, each showing normalized implied probability (pct) on both sides and the price gap in percentage points.
| Name | Type | Req | Description |
|---|---|---|---|
| minOverlapPct | number | — | Minimum keyword overlap to count as a match (0–100, default 20). Lower = more speculative matches. |
| query | string | yes | Topic to search on both Polymarket and Kalshi (e.g. 'Trump tariffs', 'Bitcoin 100k', 'Fed rate cut') |
| Name | Type | Req | Description |
|---|---|---|---|
| kalshiMarketsFound | number | yes | — |
| matchedPairs | number | yes | — |
| note | string | yes | — |
| pairs | array | yes | — |
| polymarketsFound | number | yes | — |
| query | string | yes | — |
| timestamp | string | yes | — |
| unmatchedMarkets | array | yes | — |
No examples provided.
prediction.market ~190
Provides a comprehensive deep-dive on a single Polymarket market, returning the question, outcomes with current token prices and probability percentages, price history statistics for the last 24h/7d/30d (open, close, min, max, change), total and 24h volume, liquidity depth, bid-ask spread, one-sided order flow direction, implied probability, resolution criteria, and time remaining until close. Use this after prediction.trending or prediction.search to fully evaluate a market before quoting, ordering, or monitoring. Requires at least one of slug, conditionId, or marketId — all are returned by the search and trending tools. Does not place or cancel orders.
| Name | Type | Req | Description |
|---|---|---|---|
| conditionId | string | — | Polymarket condition ID (0x-prefixed) |
| marketId | string | — | Polymarket market ID |
| slug | string | — | Polymarket market slug |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | — |
| fairValue | object | — | — |
| identifier | string | — | Present when the market was not found |
| impliedProbabilityPct | — | — | — |
| liquidity | object | — | — |
| market | object | — | — |
| note | string | — | — |
| oddsHistory | object | — | — |
| source | string | — | — |
| timestamp | string | yes | — |
| volume | object | — | — |
No examples provided.
prediction.order ~333
Constructs a Polymarket CLOB limit order payload ready for EIP-712 off-chain signing and submission to the Polymarket REST API. Polymarket uses off-chain order signing with on-chain settlement — this tool returns the EIP-712 typed-data (domain, types, message) that the agent must sign with its Polygon EOA private key, then POST to https://clob.polymarket.com/order with CLOB API authentication headers; it is not compatible with tx.simulate, tx.verify, or tx.receipt because no on-chain transaction is broadcast until settlement. Requires tokenId (from prediction.trending/search), side (buy or sell), outcome (YES or NO — label only), size (shares, positive), price (0–1 exclusive, USDC per share), and maker (Polygon EOA address); optionally pass expiration (unix seconds, 0 = GTC). Before the first order, the maker must approve the CTF Exchange contract to spend USDC on Polygon — the response includes approval details. Use prediction.quote first to validate fill price and available depth.
| Name | Type | Req | Description |
|---|---|---|---|
| expiration | number | — | Unix seconds (0 = GTC, default) |
| maker | string | yes | Polygon EOA that will sign the EIP-712 order |
| outcome | string | yes | Outcome token side (YES or NO) |
| price | number | yes | Limit price in USDC per share (0-1) |
| side | string | yes | Direction: buy to open, sell to close |
| size | number | yes | Shares |
| tokenId | string | yes | Polymarket outcome token ID |
| Name | Type | Req | Description |
|---|---|---|---|
| approvalRequired | object | yes | — |
| mode | string | yes | — |
| notice | string | yes | — |
| order | object | yes | — |
| source | string | yes | — |
| submission | object | yes | — |
| timestamp | string | yes | — |
| typedData | object | yes | — |
No examples provided.
prediction.position ~145
Returns all open and recently resolved Polymarket positions for a given Polygon EOA address, including size in outcome shares, average entry price, current market price, realized and unrealized P&L in USDC, percentage P&L, and hours remaining until resolution for each market. Use this to audit an agent's prediction market exposure, calculate portfolio value, or identify positions that are redeemable. Requires a valid Polygon EVM address (0x-prefixed, 40 hex chars); read-only via Polymarket data API — no signing or wallet connection required. Does not place or cancel orders.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Polygon EOA address holding Polymarket positions |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | — |
| note | string | yes | — |
| positions | array | yes | — |
| source | string | yes | — |
| summary | object | yes | — |
| timestamp | string | yes | — |
No examples provided.
prediction.quote ~263
Simulates a Polymarket CLOB order fill by walking the live order book, computing average fill price, total cost in USDC, slippage from mid-price in percentage and basis points, and available book depth for a given size. Call this before prediction.order to validate that the book can absorb the desired position size at an acceptable price. Requires tokenId (from prediction.trending/search), side (buy or sell), outcome (YES or NO — informational label only), and size in shares; optionally pass orderType (market or limit) and limitPrice. Returns a partial-fill warning if the book cannot fully absorb the requested size, and a slippage warning if estimated slippage exceeds 5%. Polymarket CLOB currently charges zero maker and taker fees. Does not place an order.
| Name | Type | Req | Description |
|---|---|---|---|
| limitPrice | number | — | Required for limit orders (USDC per share) |
| orderType | string | — | Order type: market fills immediately, limit rests in the book |
| outcome | string | yes | Informational — used for display only |
| side | string | yes | Direction: buy to open a position, sell to close |
| size | number | yes | Order size in shares |
| tokenId | string | yes | Polymarket outcome token ID |
| Name | Type | Req | Description |
|---|---|---|---|
| avgFillPrice | number | — | — |
| depthAvailable | number | — | — |
| error | string | — | — |
| expectedFill | object | — | — |
| fees | object | — | — |
| limitCheck | — | — | — |
| midPrice | number | — | — |
| note | string | — | — |
| orderType | string | — | — |
| outcome | string | yes | — |
| side | string | yes | — |
| size | number | yes | — |
| slippageBps | number | — | — |
| slippagePct | number | — | — |
| timestamp | string | yes | — |
| tokenId | string | yes | — |
| warnings | array | — | — |
No examples provided.
prediction.search ~148
Searches Polymarket markets by topic keyword and returns matching events with current outcome probabilities, volume, liquidity, and order book metrics including best bid, ask, and spread. Use this when looking for a specific real-world event (elections, crypto price levels, sports outcomes, geopolitical events) rather than browsing by volume. Requires query (the search term); optionally pass limit (1–25, default 10). Returns market slugs and token IDs needed for prediction.market, prediction.book, prediction.quote, and prediction.order.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Maximum results to return |
| query | string | yes | Search query (e.g. 'Bitcoin price', 'US election', 'Fed rate') |
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | yes | — |
| query | string | yes | — |
| resultCount | number | yes | — |
| source | string | yes | — |
| timestamp | string | yes | — |
No examples provided.
prediction.signals ~233
Scans the top 25 trending Polymarket markets and returns ranked actionable signals across five categories: wide_spread (bid-ask gap above 4% — market-making opportunity), extreme_probability (outcome above 92% or below 8% — contrarian or long-shot play), high_volume (turnover ratio above 5x — active price discovery), deep_liquidity (pool above $100k — safe for large size), and mispriced (outcome probabilities don't sum to 100% — arbitrage opportunity). Use this for autonomous prediction market strategy discovery without manually scanning individual markets. Optionally filter by minStrength (0–100), types (array of signal type strings), and limit (default 20, max 50). Returns each signal with strength score, affected market, suggested action, and supporting data. Signals are heuristic — verify market fundamentals before trading.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Maximum signals to return |
| minStrength | number | — | Minimum signal strength (0-100) to include |
| types | array | — | Filter to specific signal types (defaults to all) |
| Name | Type | Req | Description |
|---|---|---|---|
| marketsScanned | number | yes | — |
| note | string | yes | — |
| signalCount | number | yes | — |
| signalTypes | object | yes | Legend: signal type → description |
| signals | array | yes | Ranked signals — each has type, strength, market, question, action, and signal-specific data |
| source | string | yes | — |
| timestamp | string | yes | — |
| typeCounts | object | yes | — |
No examples provided.
prediction.trending ~149
Fetches the top trending prediction markets on Polymarket ranked by trading volume, returning market titles, current outcome probabilities (derived from CLOB token prices as 0–100% values), total volume and liquidity in USDC, and bid-ask spread per market. Use this as the starting point for prediction market discovery — call before prediction.market, prediction.book, prediction.quote, or prediction.order to obtain market slugs and token IDs. Optionally pass limit (1–25, default 10) to control result count. Data is live from Polymarket's Gamma API and reflects current on-chain state.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Number of trending markets to return (max 25) |
| Name | Type | Req | Description |
|---|---|---|---|
| eventCount | number | yes | — |
| events | array | yes | — |
| note | string | yes | — |
| source | string | yes | — |
| timestamp | string | yes | — |
No examples provided.
prediction.watch ~226
Registers a persistent background monitor for a specific Polymarket market that fires alerts when user-defined conditions are met. Supported conditions (at least one required): oddsThresholdPct (fire when implied probability crosses a target level), oddsMovePct (fire when probability moves by a delta% within a windowMinutes window), liquidityDropPct (fire when liquidity falls by a percentage from baseline), resolutionApproachingHours (fire when the market closes within N hours), and volumeSpikeMultiple (fire when 24h volume exceeds baseline by a multiple). Requires either slug or conditionId to identify the market (both returned by prediction.trending and prediction.search); optionally provide webhookUrl to receive POST payloads when conditions fire. Triggered alerts flow through alerts.check; use the returned watch ID with alerts.remove to stop monitoring. Does not place or cancel orders.
| Name | Type | Req | Description |
|---|---|---|---|
| conditionId | string | — | Polymarket condition ID |
| conditions | object | yes | At least one condition required |
| slug | string | — | Polymarket market slug |
| webhookUrl | string | — | Optional HTTPS webhook for alert delivery |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | — |
| usage | string | yes | — |
| watch | object | yes | — |
No examples provided.
rates.watch ~421
Monitor DeFi lending rates and carry opportunities without polling. Three modes: • rate — fires rate_spike when borrowAPY or supplyAPY crosses a threshold; fires rate_utilization when utilization exceeds rateUtilizationThreshold (critical at ≥95%). Each protocol/chain/market tracked independently — no false re-fires. • carry — fires carry_opportunity when (best supply APY − cheapest borrow APY) exceeds carryThreshold. Replaces manual carry screener polling. Results persisted across server restarts. Poll alerts.check to retrieve fired alerts.
| Name | Type | Req | Description |
|---|---|---|---|
| carryBorrowAsset | string | — | Asset you borrow, e.g. USDC (carry mode) |
| carryCollateral | string | — | Collateral you post to borrow, e.g. wBTC (carry mode) |
| carrySupplyAsset | string | — | Asset you supply/lend — defaults to carryBorrowAsset (carry mode) |
| carryThreshold | number | — | Minimum net spread % to fire carry_opportunity alert (carry mode) |
| mode | string | yes | rate: APY/utilization threshold; carry: net spread between best supply and cheapest borrow |
| rateBorrowAsset | string | — | Borrow asset, e.g. USDC, USDT (rate mode, default USDC) |
| rateBorrowThreshold | number | — | Borrow APY % to fire at (rate mode) |
| rateChain | string | — | Limit to a specific chain (rate mode, default all) |
| rateCollateral | string | — | Collateral asset, e.g. wBTC, ETH (rate mode) |
| rateDirection | string | — | Direction for APY threshold (default above) |
| rateProtocol | string | — | Limit to a specific protocol (rate mode, default all) |
| rateSupplyThreshold | number | — | Supply APY % to fire at (rate mode) |
| rateUtilizationThreshold | number | — | Utilization % to fire rate_utilization alert at (rate mode). Critical severity at ≥95%. |
| webhookUrl | string | — | HTTP(S) URL to POST alerts to in real-time |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | — |
| usage | string | yes | — |
| watch | object | yes | — |
No examples provided.
strategy.carry.screen ~306
Screens all DeFi lending markets across Aave v3, Compound V3, Fluid, Morpho Blue, and Spark — plus Pendle PT fixed-rate rows — for positive carry, defined as collateral supply APY minus borrow APY. Returns strategies ranked by net carry (highest first), with leveraged carry at 70% of max LTV, estimated annual USD return for a given position size, available liquidity, and utilization. Call this to discover self-funding positions where deposited collateral earns more than the cost to borrow against it; positive-carry count and best strategy are surfaced in the `summary` field for quick scanning. Optionally pass `collateral` (e.g. "wstETH"), `borrowAsset` (default "USDC"), `chain`, `minCarry` threshold (e.g. 0.5 for 0.5%+), and `positionSizeUSD` to size annual return estimates. This tool is read-only; use `lending.risk.assess` and the lending execute tools to act on a strategy.
| Name | Type | Req | Description |
|---|---|---|---|
| borrowAsset | string | — | Borrow asset |
| chain | string | — | Chain filter |
| collateral | string | — | Collateral filter: specific asset, "BTC", "ETH", or "all" |
| minCarry | number | — | Minimum net carry % to include (e.g. 0 for positive-only) |
| positionSizeUSD | number | — | Position size in USD for annual return calculation |
| Name | Type | Req | Description |
|---|---|---|---|
| note | string | yes | — |
| query | object | yes | — |
| strategies | array | yes | — |
| summary | object | yes | — |
| timestamp | string | yes | — |
No examples provided.
swap.multi ~176
Fetches up to 10 swap or bridge quotes in a single batched call, executing all route lookups in parallel and returning each result alongside a total cost summary. Use this when splitting funds across multiple chains, executing multi-leg portfolio rebalancing, or comparing routes side-by-side without making sequential calls. Each element in the requests array accepts the same parameters as swap.quote (fromToken, toToken, fromAmount, fromAddress, fromChain, toChain, slippage, order). Returns per-request results with status ok or error (failed quotes do not abort the batch), plus aggregate gas and fee totals. Quotes are valid for approximately 30 seconds; sign and submit transactions sequentially to avoid nonce conflicts. Maximum 10 requests per call.
| Name | Type | Req | Description |
|---|---|---|---|
| requests | array | yes | Array of swap/bridge requests to quote in parallel |
| Name | Type | Req | Description |
|---|---|---|---|
| failedCount | number | yes | — |
| note | string | yes | — |
| quotes | array | yes | Individual quote results — each has index, status, and full quote data or error |
| requestCount | number | yes | — |
| successCount | number | yes | — |
| timestamp | string | yes | — |
| totalCosts | object | yes | — |
No examples provided.
swap.quote ~445
Fetches an optimal swap or bridge quote across 30+ EVM chains and Solana using the LI.FI aggregator (EVM) or Jupiter (Solana), comparing routes from DEXs and bridges including 1inch, 0x, Paraswap, and major cross-chain bridges to find the best price with lowest fees. Call this before any token exchange to obtain a quote; then pass the returned unsigned transaction calldata to a wallet for signing and submission — Syenite never holds or touches private keys. Provide fromToken, toToken, fromAmount (human-readable), fromAddress, and fromChain; set toChain for cross-chain bridges, or omit to default to the same chain. Returns best route, expected output, minimum output (with slippage), gas cost, fee breakdown, and estimated execution time; cross-chain bridges may take 2–30 minutes and should be tracked with swap.status. Quotes are valid for approximately 30 seconds — re-query for fresh pricing. Does not execute the swap.
| Name | Type | Req | Description |
|---|---|---|---|
| fromAddress | string | yes | Sender wallet address (used for routing and approval checks) |
| fromAmount | string | yes | Amount to swap in smallest unit (e.g. 1000000 for 1 USDC with 6 decimals). Use token decimals. |
| fromChain | string | — | Source chain: "ethereum", "arbitrum", "optimism", "base", "polygon", "bsc", "avalanche", or chain ID |
| fromToken | string | yes | Token to sell — symbol (e.g. "USDC", "ETH") or contract address |
| order | string | — | Route preference: CHEAPEST (best price) or FASTEST (lowest execution time) |
| slippage | number | — | Max slippage as decimal (0.005 = 0.5%) |
| toAddress | string | — | Recipient address (defaults to fromAddress) |
| toChain | string | — | Destination chain (defaults to fromChain). Set differently for cross-chain bridges. |
| toToken | string | yes | Token to buy — symbol (e.g. "WETH", "USDT") or contract address |
| Name | Type | Req | Description |
|---|---|---|---|
| approvalRequired | object | — | Present when token approval is needed before the swap |
| costs | object | yes | — |
| estimatedTime | string | yes | — |
| execution | object | yes | — |
| note | string | yes | — |
| quote | object | yes | — |
| route | array | yes | Ordered routing steps |
| summary | string | yes | Human-readable summary, e.g. '1.5 WETH → 3500 USDC' |
| tracking | string | — | Present for cross-chain bridges — use swap.status to track |
| type | string | yes | — |
| warnings | array | — | Risk warnings (slippage, gas, cross-chain) |
No examples provided.
swap.status ~176
Tracks the execution status of a cross-chain bridge transaction submitted after a swap.quote call, polling LI.FI's bridge monitoring API to report whether the transfer is PENDING, DONE, or FAILED. Call this after submitting a cross-chain transaction — same-chain swaps settle immediately and do not require polling. Requires txHash (the sending transaction hash); supply fromChain and toChain for faster resolution, or omit to default to ethereum. Returns current status, substatus, receiving transaction hash, amount received at destination, and a human-readable message explaining next steps. Does not cancel or modify the transfer — it is read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| fromChain | string | — | Chain where the transaction was submitted |
| toChain | string | — | Destination chain (for cross-chain bridges) |
| txHash | string | yes | Transaction hash of the submitted swap/bridge |
| Name | Type | Req | Description |
|---|---|---|---|
| amountReceived | string | — | Present when transfer is complete |
| bridge | string | — | — |
| fromChain | string | yes | — |
| message | string | yes | Human-readable status explanation |
| note | string | yes | — |
| receivingTxHash | string | — | Present when destination tx is confirmed |
| sendingTxHash | string | yes | — |
| status | string | yes | — |
| substatus | string | — | — |
| toChain | string | yes | — |
No examples provided.
syenite.help ~89
Get information about Syenite — real-time lending rates, yield, and position alerts for AI agents. Covers Aave, Morpho, Compound, Spark, and Pendle. Also: swap/bridge routing (30+ chains), lending execution, prediction markets, carry screening, and a trust layer for transaction verification. Call this tool to learn what tools are available and how to use them.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| access | object | yes | — |
| description | string | yes | — |
| lendingProtocols | array | yes | — |
| service | string | yes | — |
| swapAndBridge | object | yes | — |
| tools | array | yes | — |
| website | string | yes | — |
| yieldSources | object | yes | — |
No examples provided.