650,522 tools. Updated 2026-10-14 03:29
"Glitch" matching MCP tools:
- PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Transitions at SCENE CHANGES — junctions where the footage actually changes shot, or where an insert (b-roll, title card, generated clip) splices in. All duration-preserving junction effects (footage never overlaps, timing never changes). IMPORTANT — after cut_silences a talking-head video has one junction per removed pause, and nearly all of them are JUMP CUTS inside one continuous shot: same framing, same subject, the speaker's head half a word further along. A jump cut works by being invisible. Putting a whip or a dip on each one fires a full-screen effect every couple of seconds through footage that never changed scene, and it reads as broken — a real user shipped 45 whips through one continuous shot and said so. scope defaults to 'scene' and handles this for you; the result tells you how many junctions it actually landed on and how many it skipped, so report THAT number, not the cut count. Pass scope='every_cut' whenever that stronger treatment serves the edit. Styles: 'dip_black' = quick dip through black (calm, universal); 'dip_white' = soft white fade-through; 'whip_left'/'whip_right' = fast directional slide with motion blur (energetic vlogs/reels); 'zoom_punch' = accelerating push through the cut (hype, sports); 'glitch' = RGB-split/noise burst (tech, gaming); 'flash' = additive white pop peaking ON the cut (beat-synced edits). duration_s 0.1-1.5 (default 0.3; keep whip/flash short, 0.15-0.4). 'none' removes them (hard cuts again). True crossfades (overlapping footage) are NOT supported — offer one of these instead and say so.ConnectorOAuth
- Create a complete, editable lyric-video or story-video draft and get back an edit link for the user. Prefer script mode (one beat per line) unless exact timings are known. Drafts expire after 30 days unless the user saves them. Most ads use one or two effects for the whole piece. fade, rise and pop read as professional; scatter, slam and glitch read as novelty and get tiring past a line or two. Vary the type SIZE and the vertical POSITION between lines rather than the effect — that is what makes a piece look composed rather than captioned.ConnectorNo auth
- Machine-readable, append-only signal track record. Includes a by_signal_type breakdown: for each signal (ENTER, EXIT_NOW, STEALTH_ACCUM, DISTRIBUTION_TRAP, TAKE_PROFIT…) the sample size and average 1h/6h/24h return plus directional accuracy, and calibration_slices (e.g. high-confidence-only, confirmed-only). Lets an agent decide how much to trust each signal type. Paper outcomes, |return|>500% excluded as glitch — descriptive, not a profit promise.ConnectorNo auth
- PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Cut to a full-frame CORRUPT / glitch screen for a beat, then return to the footage — a datamosh-style transition BETWEEN sections (e.g. podcast -> CORRUPT -> the next scene). Synthesized locally like the colour cards: NO image or video generation, always available, costs no generation credits. style: 'digital' (vivid datamosh macroblocks + horizontal tearing, the default), 'vhs' (tracking band + scanlines + chroma bleed), or 'static' (TV snow / no-signal). at_output_s is PROGRAM seconds; everything after shifts later by duration_s. Keep it SHORT (0.3-1s reads as a hit; longer feels genuinely broken). intensity 0-1 = how harsh (default 0.7). Silent by default (sound effects are optional, never rules) — the program pauses on it with no sound; sound=true lays the approved library glitch recording under it (glitch_1, or glitch_2 on a screen over 0.7s) when the break earns one. No captions ever land on it (inserted media).ConnectorOAuth
- PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. One call sets a whole premium look: captions, grade, texture, transitions and optional music. PREMIUM SYSTEMS (best for reels/shorts) — 'editorial': ivory sans captions whose key words turn gold serif italic, matte filmic grade (lifted blacks, soft highlights, gentle desaturation), light grain + vignette, soft white dips; 'creator_punch': bold uppercase pop captions with a yellow active word, vibrant punchy grade, zoom-punch scene transitions; 'cinematic_doc': clean sentence-case captions that rise in word by word, warm teal/orange cinematic grade, vignette + fine grain, unhurried dips to black; 'mono_noir': high-contrast black-and-white, stacked captions whose hero word slams in (key words red), heavy grain + vignette, glitch transitions; 'clean_minimal': large clean white captions that rise in as spoken, near-neutral polish grade, no texture, hard cuts. A system draws captions with the browser motion engine, REPLACES the earlier look's custom grade and whole-video texture, never puts a fade from black on a vertical short, and returns hero-moment templates to place next with add_motion_graphic. A look places NO sound unless transition_sounds=true (sound effects are optional, never rules): then a spaced few of its transitions take an approved library sound. CLASSIC looks: 'hype' (beast xl captions, vibrant, zoom_punch cuts), 'clean' (clean white size-led captions, ungraded), 'cinematic' (elegant captions, cinematic grade + warmth, dip_black), 'luxury' (luxe captions, warm), 'meme' (impact xl captions, flash cuts, grain); their fades apply to landscape only. Transitions fire only at real scene changes (B-roll/inserts/new shots), never on jump cuts. music= takes only the exact slug of a library track the USER picked (offer tracks with ask_user; never 'auto' or a mood — agents never choose music) and lays it as a ducked CC0 bed (-18 to -22 dB) when the edit has no music yet; otherwise omit music. Preserves existing emphasis_words, else picks them from the transcript. Never touches cuts. Every component can be adjusted afterwards with its own tool.ConnectorOAuth
- FLOWS BETWEEN TWO ADDRESS SETS on Arbitrum (arb, ARB, Arbitrum One, L2): every successful transfer (tokens and native ETH) from any address of set A to any address of set B, and back, in ONE call - "did these wallets ever pay those wallets", "how much moved between my suspects and the exchange wallets", "which of these deposit addresses sent to that hot wallet". Pass up to 50 addresses per set separated by "|" (0xabc…|0xdef…). A longer list is not an error: the first 50 distinct addresses of each set are used and the rest are ignored - every row reports A_Addresses_Requested / A_Addresses_Used and B_Addresses_Requested / B_Addresses_Used, so compare them and split a longer set into several calls. Leave addresses_b EMPTY to get every counterparty of the A set, both directions, grouped per A address - the multi-address form of arbitrum_flow_edges. mode="summary" (default) returns one row per (Direction, Sender, Receiver, token) with Transfers, total Amount, First_Time, Last_Time and the latest Tx, ordered by `sort`. mode="rows" returns the individual transfers newest first; page with cursor: pass the Cursor value of the LAST row, with all other arguments unchanged, to get the next page (a summary row carries no Cursor). A rows-mode row is a LEDGER LINE: besides the amount it carries Amount_Raw (the exact integer amount in the token's smallest unit) with Decimals, Block and Tx_Index, and Price_Usd (the token's USD price at the time of the transfer), Value_Usd = Amount x Price_Usd and Price_Status - "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check it with price_at. ETH and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. On a summary row those seven columns are empty: a total over a period has no single price. Self = 1 (both modes) marks a movement whose counterparty is another address of set A - a move inside the set, not income and not spending. Direction A_TO_B = sent by an A address to a B address, B_TO_A = sent by a B address to an A address; an address listed in both sets appears in both directions. With addresses_b empty the same holds for a transfer between two A addresses: it is listed as A_TO_B for its sender AND as B_TO_A for its receiver, so never add rows of both directions together. WINDOW: the last `days` days (default 30, at most 366) ending at before_time, or now; after_time sets the start instead, within the same 366-day limit. Window_From / Window_To on every row show the range searched; for an older period set before_time. An empty result means no transfer between the sets in that window. COST: the search is keyed on set A, so put the SMALLER and less busy set in addresses_a - individual wallets, not exchange hot wallets, bridges or token contracts. If the call fails with a row-limit error ("Limit for rows ... exceeded"), swap the two sets, shorten days, or split set A. Cost also grows with the number of addresses in set A times the window. Each row carries the token Contract (empty for native ETH); a symbol alone can match look-alike clones, so pin one token with contract, or restrict to native or tokens with asset_type. Amount is in TOKEN UNITS: totals of different tokens must not be compared or added together, there is no usd filter (min_amount is in token units), and sort="amount" is only meaningful with one token pinned. To identify the addresses, pass them to labels_for_addresses.ConnectorOAuth
Matching MCP Servers

Glitch MCPofficial
AlicenseAqualityBmaintenanceConnects AI developer tools to the Glitch Agent service for game marketing tasks such as Steam analysis, influencer outreach, PR planning, and approval workflows.20500 npm1MIT- AlicenseAqualityBmaintenanceChecks a repository's own guardrails and fails any that are present but have stopped refusing anything. Three read-only tools: installation status, per-step verification that issues a receipt, and a tail of the append-only ledger recording every question and answer.372 PyPIApache 2.0
Matching MCP Connectors
Data by municipality near Barcelona and Madrid: €/m², IBI, rent, minutes. Every figure sourced
Your agent asks before it acts, so the same real-world action is attempted at most once.
- TRANSACTION HISTORY of an Arbitrum (arb, ARB, Arbitrum One, L2) address — every transaction it sent or received directly (its own From or To; a token it received inside someone else's transaction is in arbitrum_transfers_in), newest first, paginated. Page back with `before` = the last Tx of the previous page (returns strictly OLDER transactions; an unknown hash yields an empty page). `until` = only transactions NEWER than that tx. NOT a token-transfer list — for asset flows use arbitrum_transfers_in / arbitrum_transfers_out; to inspect one transaction's transfers use arbitrum_tx_transfers. Each row also carries the exact fee: Fee_Wei is the fee in the smallest unit as a decimal string (Fee is the same amount in ETH, rounded to 8 decimals); Fee_Usd is its value at the ETH price at the time of the transaction. Fee_Price_Status says how far to trust that price: ok; no_price (Fee_Usd is empty - never read it as zero); suspect (the price is more than twice, or less than half, the price a day earlier AND a day later - a likely data glitch, so Fee_Usd is left empty). A failed transaction (Success = 0) still paid its fee: treat it as a fee-only row. The fee was paid by the sender (From): count it for this address only on rows where From is the address. Fee_Status is ok on this chain. Returns up to limit transactions per page (default 25, at most 10000), newest first, failed transactions (Success = 0) included unless only_successful=1; a page shorter than limit is the last one. An unknown `until` hash is not applied (no lower bound); `before` and `until` together bound one range. Each row: Tx, Time, Block, TxIndex, From, To, Value, Success, Fee, Fee_Status, Fee_Wei, Fee_Usd, Fee_Price_Status.ConnectorOAuth
- INCOMING Arbitrum (arb, ARB, Arbitrum One, L2) transfers to an address — where this wallet received funds from. NOT the opposite direction → use arbitrum_transfers_out. NOT totals per sender → use arbitrum_address_flow_summary. Returns up to limit transfers (default 20, at most 10000), newest first by default; page back with the last row's Cursor. Use to trace the source of funds backwards. For an address with many transfers set min_amount or sort='amount', else large sources hide behind recent dust. Query WITHOUT a currency filter to see where the bulk of funds originated. To identify counterparties, pass the returned addresses to labels_for_addresses. Each row carries the token Contract — a symbol alone can match look-alike clones, so pin the real token with the contract param. Amount is in TOKEN UNITS; amounts of different tokens must never be added together. Each row also carries Price_Usd - the token's USD price at the time of the transfer - and Value_Usd = Amount x Price_Usd, with Price_Status: "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check the price with price_at. ETH and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. There is no usd filter: min_amount / max_amount are in token units. For a ranking you can reason about, pin ONE token with contract, or bound the range with min_amount / max_amount. Amount_Raw is the exact amount as an integer in the token's smallest unit and Decimals its scale (Amount = Amount_Raw / 10^Decimals); Block and Tx_Index place the row in the chain. A transaction's own transfer is TOP-LEVEL, not internal, and is always included. Internal = 1 marks a transfer moved by contract code deeper inside a transaction; those are left out unless you pass include_internal=1. `Symbol_NonAscii` = 1 flags a symbol that is not plain ASCII: normal for CJK / emoji names, also how a look-alike imitates a major token. Each row: Time, Sender, Currency, Symbol_NonAscii, Contract, Amount, Internal, Tx, Cursor, Amount_Raw, Decimals, Block, Tx_Index, Price_Status, Price_Usd, Value_Usd.ConnectorOAuth
- OUTGOING Arbitrum (arb, ARB, Arbitrum One, L2) transfers from an address — where this wallet sent funds. Narrow with after_time (flows after funds arrived), currency (follow one asset), min_amount (drop dust). For an aggregated "where did the bulk go" view use arbitrum_trace_next_hop; for incoming use arbitrum_transfers_in. For an address with many transfers set min_amount or sort='amount', else large counterparties hide behind recent dust. Query WITHOUT a currency filter to surface the token → USDT off-ramp. Page back through history with cursor: pass the Cursor value of the LAST row of a page to get the next one — unlike before_time it never skips rows that share a timestamp. To identify counterparties, pass the returned addresses to labels_for_addresses. Each row carries the token Contract — a symbol alone can match look-alike clones, so pin the real token with the contract param. Amount is in TOKEN UNITS; amounts of different tokens must never be added together. Each row also carries Price_Usd - the token's USD price at the time of the transfer - and Value_Usd = Amount x Price_Usd, with Price_Status: "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check the price with price_at. ETH and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. There is no usd filter: min_amount / max_amount are in token units. For a ranking you can reason about, pin ONE token with contract, or bound the range with min_amount / max_amount. Amount_Raw is the exact amount as an integer in the token's smallest unit and Decimals its scale (Amount = Amount_Raw / 10^Decimals); Block and Tx_Index place the row in the chain. A transaction's own transfer is TOP-LEVEL, not internal, and is always included. Internal = 1 marks a transfer moved by contract code deeper inside a transaction; those are left out unless you pass include_internal=1.ConnectorOAuth
- FLOWS BETWEEN TWO ADDRESS SETS on Arc (arc, ARC, Arc Network, Circle Arc): every successful transfer (tokens and native USDC) from any address of set A to any address of set B, and back, in ONE call - "did these wallets ever pay those wallets", "how much moved between my suspects and the exchange wallets", "which of these deposit addresses sent to that hot wallet". Pass up to 50 addresses per set separated by "|" (0xabc…|0xdef…). A longer list is not an error: the first 50 distinct addresses of each set are used and the rest are ignored - every row reports A_Addresses_Requested / A_Addresses_Used and B_Addresses_Requested / B_Addresses_Used, so compare them and split a longer set into several calls. Leave addresses_b EMPTY to get every counterparty of the A set, both directions, grouped per A address - the multi-address form of arc_flow_edges. mode="summary" (default) returns one row per (Direction, Sender, Receiver, token) with Transfers, total Amount, First_Time, Last_Time and the latest Tx, ordered by `sort`. mode="rows" returns the individual transfers newest first; page with cursor: pass the Cursor value of the LAST row, with all other arguments unchanged, to get the next page (a summary row carries no Cursor). A rows-mode row is a LEDGER LINE: besides the amount it carries Amount_Raw (the exact integer amount in the token's smallest unit) with Decimals, Block and Tx_Index, and Price_Usd (the token's USD price at the time of the transfer), Value_Usd = Amount x Price_Usd and Price_Status - "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check it with price_at. A token has ONE price per day, so its value is approximate. USDC on Arc - the native coin and the ERC-20 at 0x3600000000000000000000000000000000000000 - always reads no_price here: it is USDC, so price it as USDC on Ethereum with price_at. On a summary row those seven columns are empty: a total over a period has no single price. Self = 1 (both modes) marks a movement whose counterparty is another address of set A - a move inside the set, not income and not spending. Direction A_TO_B = sent by an A address to a B address, B_TO_A = sent by a B address to an A address; an address listed in both sets appears in both directions. With addresses_b empty the same holds for a transfer between two A addresses: it is listed as A_TO_B for its sender AND as B_TO_A for its receiver, so never add rows of both directions together. WINDOW: the last `days` days (default 30, at most 366) ending at before_time, or now; after_time sets the start instead, within the same 366-day limit. Window_From / Window_To on every row show the range searched; for an older period set before_time. An empty result means no transfer between the sets in that window. COST: the search is keyed on set A, so put the SMALLER and less busy set in addresses_a - individual wallets, not exchange hot wallets, bridges or token contracts. If the call fails with a row-limit error ("Limit for rows ... exceeded"), swap the two sets, shorten days, or split set A. Cost also grows with the number of addresses in set A times the window. Each row carries the token Contract (empty for native USDC); a symbol alone can match look-alike clones, so pin one token with contract, or restrict to native or tokens with asset_type. Amount is in TOKEN UNITS: totals of different tokens must not be compared or added together, there is no usd filter (min_amount is in token units), and sort="amount" is only meaningful with one token pinned. To identify the addresses, pass them to labels_for_addresses. USDC ON ARC IS ONE ASSET WITH TWO INTERFACES that share a single balance: the NATIVE coin that pays for gas (Native = 1, no contract, 18 decimals) and the ERC-20 token at 0x3600000000000000000000000000000000000000 (6 decimals). Each movement is listed once, under the interface that carried it, so the two together are the address's USDC flow - asset_type="usdc" selects both at once. Over a thousand OTHER contracts on this chain also print the symbol USDC and they are unrelated tokens: never identify an asset by its symbol, use Contract and Native. On Arc most USDC moves through contract code, so internal transfers are counted by default; pass include_internal=0 for top-level transfers only.ConnectorOAuth
- INCOMING Arc (arc, ARC, Arc Network, Circle Arc) transfers to an address — where this wallet received funds from. NOT the opposite direction → use arc_transfers_out. NOT totals per sender → use arc_address_flow_summary. Returns up to limit transfers (default 20, at most 10000), newest first by default; page back with the last row's Cursor. Use to trace the source of funds backwards. For an address with many transfers set min_amount or sort='amount', else large sources hide behind recent dust. Query WITHOUT a currency filter to see where the bulk of funds originated. To identify counterparties, pass the returned addresses to labels_for_addresses. Each row carries the token Contract — a symbol alone can match look-alike clones, so pin the real token with the contract param. Amount is in TOKEN UNITS; amounts of different tokens must never be added together. Each row also carries Price_Usd - the token's USD price at the time of the transfer - and Value_Usd = Amount x Price_Usd, with Price_Status: "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check the price with price_at. A token has ONE price per day, so its value is approximate. USDC ON ARC IS NOT PRICED HERE: the native coin and the ERC-20 at 0x3600000000000000000000000000000000000000 always read no_price - it is USDC, so price it as USDC on Ethereum with price_at. There is no usd filter: min_amount / max_amount are in token units. For a ranking you can reason about, pin ONE token with contract, or bound the range with min_amount / max_amount. Amount_Raw is the exact amount as an integer in the token's smallest unit and Decimals its scale (Amount = Amount_Raw / 10^Decimals); Block and Tx_Index place the row in the chain. Every row carries Native (1 = the native coin) next to Contract, and Internal = 1 marks a transfer moved by contract code inside a transaction. On Arc most USDC moves through contract code, so internal transfers are counted by default; pass include_internal=0 for top-level transfers only. A transaction's own transfer is top-level, not internal. USDC ON ARC IS ONE ASSET WITH TWO INTERFACES that share a single balance: the NATIVE coin that pays for gas (Native = 1, no contract, 18 decimals) and the ERC-20 token at 0x3600000000000000000000000000000000000000 (6 decimals). Each movement is listed once, under the interface that carried it, so the two together are the address's USDC flow - asset_type="usdc" selects both at once, and Contract tells you which interface a row used. Over a thousand OTHER contracts on this chain print the symbol USDC too and they are unrelated tokens: never identify an asset by its symbol, use Contract and Native. System rows that only repeat a USDC movement already listed here are left out, so nothing is counted twice. `Symbol_NonAscii` = 1 flags a symbol that is not plain ASCII: normal for CJK / emoji names, also how a look-alike imitates a major token. Each row: Time, Sender, Currency, Symbol_NonAscii, Contract, Native, Amount, Internal, Tx, Cursor, Amount_Raw, Decimals, Block, Tx_Index, Price_Status, Price_Usd, Value_Usd.ConnectorOAuth
- OUTGOING Arc (arc, ARC, Arc Network, Circle Arc) transfers from an address — where this wallet sent funds. Narrow with after_time (flows after funds arrived), currency (follow one asset), min_amount (drop dust). For an aggregated "where did the bulk go" view use arc_trace_next_hop; for incoming use arc_transfers_in. For an address with many transfers set min_amount or sort='amount', else large counterparties hide behind recent dust. Query WITHOUT a currency filter to surface the token → USDC off-ramp. Page back through history with cursor: pass the Cursor value of the LAST row of a page to get the next one — unlike before_time it never skips rows that share a timestamp. To identify counterparties, pass the returned addresses to labels_for_addresses. Each row carries the token Contract — a symbol alone can match look-alike clones, so pin the real token with the contract param. Amount is in TOKEN UNITS; amounts of different tokens must never be added together. Each row also carries Price_Usd - the token's USD price at the time of the transfer - and Value_Usd = Amount x Price_Usd, with Price_Status: "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check the price with price_at. A token has ONE price per day, so its value is approximate. USDC ON ARC IS NOT PRICED HERE: the native coin and the ERC-20 at 0x3600000000000000000000000000000000000000 always read no_price - it is USDC, so price it as USDC on Ethereum with price_at. There is no usd filter: min_amount / max_amount are in token units. For a ranking you can reason about, pin ONE token with contract, or bound the range with min_amount / max_amount. Amount_Raw is the exact amount as an integer in the token's smallest unit and Decimals its scale (Amount = Amount_Raw / 10^Decimals); Block and Tx_Index place the row in the chain. Every row carries Native (1 = the native coin) next to Contract, and Internal = 1 marks a transfer moved by contract code inside a transaction. On Arc most USDC moves through contract code, so internal transfers are counted by default; pass include_internal=0 for top-level transfers only. A transaction's own transfer is top-level, not internal. USDC ON ARC IS ONE ASSET WITH TWO INTERFACES that share a single balance: the NATIVE coin that pays for gas (Native = 1, no contract, 18 decimals) and the ERC-20 token at 0x3600000000000000000000000000000000000000 (6 decimals). Each movement is listed once, under the interface that carried it, so the two together are the address's USDC flow - asset_type="usdc" selects both at once, and Contract tells you which interface a row used. Over a thousand OTHER contracts on this chain print the symbol USDC too and they are unrelated tokens: never identify an asset by its symbol, use Contract and Native. System rows that only repeat a USDC movement already listed here are left out, so nothing is counted twice.ConnectorOAuth
- FLOWS BETWEEN TWO ADDRESS SETS on Base (base, L2, Coinbase L2): every successful transfer (tokens and native ETH) from any address of set A to any address of set B, and back, in ONE call - "did these wallets ever pay those wallets", "how much moved between my suspects and the exchange wallets", "which of these deposit addresses sent to that hot wallet". Pass up to 50 addresses per set separated by "|" (0xabc…|0xdef…). A longer list is not an error: the first 50 distinct addresses of each set are used and the rest are ignored - every row reports A_Addresses_Requested / A_Addresses_Used and B_Addresses_Requested / B_Addresses_Used, so compare them and split a longer set into several calls. Leave addresses_b EMPTY to get every counterparty of the A set, both directions, grouped per A address - the multi-address form of base_flow_edges. mode="summary" (default) returns one row per (Direction, Sender, Receiver, token) with Transfers, total Amount, First_Time, Last_Time and the latest Tx, ordered by `sort`. mode="rows" returns the individual transfers newest first; page with cursor: pass the Cursor value of the LAST row, with all other arguments unchanged, to get the next page (a summary row carries no Cursor). A rows-mode row is a LEDGER LINE: besides the amount it carries Amount_Raw (the exact integer amount in the token's smallest unit) with Decimals, Block and Tx_Index, and Price_Usd (the token's USD price at the time of the transfer), Value_Usd = Amount x Price_Usd and Price_Status - "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check it with price_at. ETH and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. On a summary row those seven columns are empty: a total over a period has no single price. Self = 1 (both modes) marks a movement whose counterparty is another address of set A - a move inside the set, not income and not spending. Direction A_TO_B = sent by an A address to a B address, B_TO_A = sent by a B address to an A address; an address listed in both sets appears in both directions. With addresses_b empty the same holds for a transfer between two A addresses: it is listed as A_TO_B for its sender AND as B_TO_A for its receiver, so never add rows of both directions together. WINDOW: the last `days` days (default 30, at most 366) ending at before_time, or now; after_time sets the start instead, within the same 366-day limit. Window_From / Window_To on every row show the range searched; for an older period set before_time. An empty result means no transfer between the sets in that window. COST: the search is keyed on set A, so put the SMALLER and less busy set in addresses_a - individual wallets, not exchange hot wallets, bridges or token contracts. If the call fails with a row-limit error ("Limit for rows ... exceeded"), swap the two sets, shorten days, or split set A. Cost also grows with the number of addresses in set A times the window - this chain is among the slowest for it: keep set A to about 10 addresses (fewer addresses help far more than a shorter window). Each row carries the token Contract (empty for native ETH); a symbol alone can match look-alike clones, so pin one token with contract, or restrict to native or tokens with asset_type. Amount is in TOKEN UNITS: totals of different tokens must not be compared or added together, there is no usd filter (min_amount is in token units), and sort="amount" is only meaningful with one token pinned. To identify the addresses, pass them to labels_for_addresses.ConnectorOAuth
- Paginated TRANSACTION HISTORY of a Base (base, L2, Coinbase L2) address — every transaction it sent or received directly (its own From or To; a token it received inside someone else's transaction is in base_transfers_in), newest first. Page back: pass the last Tx of the previous page as `before` to get strictly older transactions (an unknown hash returns an empty page); `until` returns only transactions strictly newer than that hash. NOT a token-transfer list — for token/native transfer flows use base_transfers_in / base_transfers_out; to inspect one transaction's transfers use base_tx_transfers. Each row also carries the exact fee: Fee_Wei is the fee in the smallest unit as a decimal string (Fee is the same amount in ETH, rounded to 8 decimals); Fee_Usd is its value at the ETH price at the time of the transaction. Fee_Price_Status says how far to trust that price: ok; no_price (Fee_Usd is empty - never read it as zero); suspect (the price is more than twice, or less than half, the price a day earlier AND a day later - a likely data glitch, so Fee_Usd is left empty). A failed transaction (Success = 0) still paid its fee: treat it as a fee-only row. The fee was paid by the sender (From): count it for this address only on rows where From is the address. Fee_Status tells whether the fee itself can be used: ok; may_omit_l1 = the recorded amount is the execution fee alone, the L1 data fee is missing from it, so the true fee is higher (a lower bound); unreliable = the recorded fee is known to be wrong and is NOT usable - Fee_Wei and Fee_Usd are empty there, the Fee of such a row must be ignored, and the real fee has to come from the transaction's receipt. Three cases are unreliable: every transaction before 2024-03-14; every transaction from 2026-05-30 19:29 to 2026-07-01 17:30 UTC (recorded too high, up to more than a thousand times); and a transaction recorded with a lower gas price than it was sent with (recorded far too low). Returns up to limit transactions per page (default 25, at most 10000), newest first, failed transactions (Success = 0) included unless only_successful=1; a page shorter than limit is the last one. An unknown `until` hash is not applied (no lower bound); `before` and `until` together bound one range. Each row: Tx, Time, Block, TxIndex, From, To, Value, Success, Fee, Fee_Status, Fee_Wei, Fee_Usd, Fee_Price_Status.ConnectorOAuth
- INCOMING Base (base, L2, Coinbase L2) transfers to an address — where this wallet received funds from. NOT the opposite direction → use base_transfers_out. NOT totals per sender → use base_address_flow_summary. Returns up to limit transfers (default 20, at most 10000), newest first by default; page back with the last row's Cursor. Use to trace the source of funds backwards. For an address with many transfers set min_amount or sort='amount', else large sources hide behind recent dust. Query WITHOUT a currency filter to see where the bulk of funds originated. To identify counterparties, pass the returned addresses to labels_for_addresses. Each row carries the token Contract — a symbol alone can match look-alike clones, so pin the real token with the contract param. Amount is in TOKEN UNITS; amounts of different tokens must never be added together. Each row also carries Price_Usd - the token's USD price at the time of the transfer - and Value_Usd = Amount x Price_Usd, with Price_Status: "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check the price with price_at. ETH and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. There is no usd filter: min_amount / max_amount are in token units. For a ranking you can reason about, pin ONE token with contract, or bound the range with min_amount / max_amount. Amount_Raw is the exact amount as an integer in the token's smallest unit and Decimals its scale (Amount = Amount_Raw / 10^Decimals); Block and Tx_Index place the row in the chain. A transaction's own transfer is TOP-LEVEL, not internal, and is always included. Internal = 1 marks a transfer moved by contract code deeper inside a transaction; those are left out unless you pass include_internal=1. `Symbol_NonAscii` = 1 flags a symbol that is not plain ASCII: normal for CJK / emoji names, also how a look-alike imitates a major token. Each row: Time, Sender, Currency, Symbol_NonAscii, Contract, Amount, Internal, Tx, Cursor, Amount_Raw, Decimals, Block, Tx_Index, Price_Status, Price_Usd, Value_Usd.ConnectorOAuth
- OUTGOING Base (base, L2, Coinbase L2) transfers from an address — where this wallet sent funds. Narrow with after_time (flows after funds arrived), currency (follow one asset), min_amount (drop dust). For an aggregated "where did the bulk go" view use base_trace_next_hop; for incoming use base_transfers_in. For an address with many transfers set min_amount or sort='amount', else large counterparties hide behind recent dust. Query WITHOUT a currency filter to surface the token → USDT off-ramp. Page back through history with cursor: pass the Cursor value of the LAST row of a page to get the next one — unlike before_time it never skips rows that share a timestamp. To identify counterparties, pass the returned addresses to labels_for_addresses. Each row carries the token Contract — a symbol alone can match look-alike clones, so pin the real token with the contract param. Amount is in TOKEN UNITS; amounts of different tokens must never be added together. Each row also carries Price_Usd - the token's USD price at the time of the transfer - and Value_Usd = Amount x Price_Usd, with Price_Status: "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check the price with price_at. ETH and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. There is no usd filter: min_amount / max_amount are in token units. For a ranking you can reason about, pin ONE token with contract, or bound the range with min_amount / max_amount. Amount_Raw is the exact amount as an integer in the token's smallest unit and Decimals its scale (Amount = Amount_Raw / 10^Decimals); Block and Tx_Index place the row in the chain. A transaction's own transfer is TOP-LEVEL, not internal, and is always included. Internal = 1 marks a transfer moved by contract code deeper inside a transaction; those are left out unless you pass include_internal=1.ConnectorOAuth
- FLOWS BETWEEN TWO ADDRESS SETS on BSC (bsc, BNB, BNB Chain, Binance Smart Chain): every successful transfer (tokens and native BNB) from any address of set A to any address of set B, and back, in ONE call - "did these wallets ever pay those wallets", "how much moved between my suspects and the exchange wallets", "which of these deposit addresses sent to that hot wallet". Pass up to 50 addresses per set separated by "|" (0xabc…|0xdef…). A longer list is not an error: the first 50 distinct addresses of each set are used and the rest are ignored - every row reports A_Addresses_Requested / A_Addresses_Used and B_Addresses_Requested / B_Addresses_Used, so compare them and split a longer set into several calls. Leave addresses_b EMPTY to get every counterparty of the A set, both directions, grouped per A address - the multi-address form of bsc_flow_edges. mode="summary" (default) returns one row per (Direction, Sender, Receiver, token) with Transfers, total Amount, First_Time, Last_Time and the latest Tx, ordered by `sort`. mode="rows" returns the individual transfers newest first; page with cursor: pass the Cursor value of the LAST row, with all other arguments unchanged, to get the next page (a summary row carries no Cursor). A rows-mode row is a LEDGER LINE: besides the amount it carries Amount_Raw (the exact integer amount in the token's smallest unit) with Decimals, Block and Tx_Index, and Price_Usd (the token's USD price at the time of the transfer), Value_Usd = Amount x Price_Usd and Price_Status - "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check it with price_at. BNB and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. On a summary row those seven columns are empty: a total over a period has no single price. Self = 1 (both modes) marks a movement whose counterparty is another address of set A - a move inside the set, not income and not spending. Direction A_TO_B = sent by an A address to a B address, B_TO_A = sent by a B address to an A address; an address listed in both sets appears in both directions. With addresses_b empty the same holds for a transfer between two A addresses: it is listed as A_TO_B for its sender AND as B_TO_A for its receiver, so never add rows of both directions together. WINDOW: the last `days` days (default 30, at most 366) ending at before_time, or now; after_time sets the start instead, within the same 366-day limit. Window_From / Window_To on every row show the range searched; for an older period set before_time. An empty result means no transfer between the sets in that window. COST: the search is keyed on set A, so put the SMALLER and less busy set in addresses_a - individual wallets, not exchange hot wallets, bridges or token contracts. If the call fails with a row-limit error ("Limit for rows ... exceeded"), swap the two sets, shorten days, or split set A. Cost also grows with the number of addresses in set A times the window - this chain is among the slowest for it: keep set A to about 5 addresses (fewer addresses help far more than a shorter window). Each row carries the token Contract (empty for native BNB); a symbol alone can match look-alike clones, so pin one token with contract, or restrict to native or tokens with asset_type. Amount is in TOKEN UNITS: totals of different tokens must not be compared or added together, there is no usd filter (min_amount is in token units), and sort="amount" is only meaningful with one token pinned. To identify the addresses, pass them to labels_for_addresses.ConnectorOAuth
- Paginated TRANSACTION HISTORY of a BSC (bsc, BNB, BNB Chain, Binance Smart Chain) address — every transaction it sent or received directly (its own From or To; a token it received inside someone else's transaction is in bsc_transfers_in), newest first, deep-pageable. To page back, pass the last Tx of the previous page as `before` (returns strictly older transactions; an unknown hash returns an empty page). `until` bounds the other side (only transactions newer than that tx). NOT a token-transfer list — for token/BNB movements use bsc_transfers_out / bsc_transfers_in; to see what ONE transaction did, pass its hash to bsc_tx_transfers. Value and Fee are in BNB. Each row also carries the exact fee: Fee_Wei is the fee in the smallest unit as a decimal string (Fee is the same amount in BNB, rounded to 8 decimals); Fee_Usd is its value at the BNB price at the time of the transaction. Fee_Price_Status says how far to trust that price: ok; no_price (Fee_Usd is empty - never read it as zero); suspect (the price is more than twice, or less than half, the price a day earlier AND a day later - a likely data glitch, so Fee_Usd is left empty). A failed transaction (Success = 0) still paid its fee: treat it as a fee-only row. The fee was paid by the sender (From): count it for this address only on rows where From is the address. Fee_Status is ok on this chain. Returns up to limit transactions per page (default 25, at most 10000), newest first, failed transactions (Success = 0) included unless only_successful=1; a page shorter than limit is the last one. An unknown `until` hash is not applied (no lower bound); `before` and `until` together bound one range. Each row: Tx, Time, Block, TxIndex, From, To, Value, Success, Fee, Fee_Status, Fee_Wei, Fee_Usd, Fee_Price_Status.ConnectorOAuth
- INCOMING BSC (bsc, BNB, BNB Chain, Binance Smart Chain) transfers to an address — where this wallet received funds from. NOT the opposite direction → use bsc_transfers_out. NOT totals per sender → use bsc_address_flow_summary. Returns up to limit transfers (default 20, at most 10000), newest first by default; page back with the last row's Cursor. Use to trace the source of funds backwards. For an address with many transfers set min_amount or sort='amount', else large sources hide behind recent dust. Query WITHOUT a currency filter to see where the bulk of funds originated. To identify counterparties, pass the returned addresses to labels_for_addresses. Each row carries the token Contract — a symbol alone can match look-alike clones, so pin the real token with the contract param. Amount is in TOKEN UNITS; amounts of different tokens must never be added together. Each row also carries Price_Usd - the token's USD price at the time of the transfer - and Value_Usd = Amount x Price_Usd, with Price_Status: "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check the price with price_at. BNB and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. There is no usd filter: min_amount / max_amount are in token units. For a ranking you can reason about, pin ONE token with contract, or bound the range with min_amount / max_amount. Amount_Raw is the exact amount as an integer in the token's smallest unit and Decimals its scale (Amount = Amount_Raw / 10^Decimals); Block and Tx_Index place the row in the chain. A transaction's own transfer is TOP-LEVEL, not internal, and is always included. Internal = 1 marks a transfer moved by contract code deeper inside a transaction; those are left out unless you pass include_internal=1. `Symbol_NonAscii` = 1 flags a symbol that is not plain ASCII: normal for CJK / emoji names, also how a look-alike imitates a major token. Each row: Time, Sender, Currency, Symbol_NonAscii, Contract, Amount, Internal, Tx, Cursor, Amount_Raw, Decimals, Block, Tx_Index, Price_Status, Price_Usd, Value_Usd.ConnectorOAuth
- OUTGOING BSC (bsc, BNB, BNB Chain, Binance Smart Chain) transfers from an address — where this wallet sent funds. Narrow with after_time (flows after funds arrived), currency (follow one asset), min_amount (drop dust). For an aggregated "where did the bulk go" view use bsc_trace_next_hop; for incoming use bsc_transfers_in. For an address with many transfers set min_amount or sort='amount', else large counterparties hide behind recent dust. Query WITHOUT a currency filter to surface the token → USDT off-ramp. Page back through history with cursor: pass the Cursor value of the LAST row of a page to get the next one — unlike before_time it never skips rows that share a timestamp. To identify counterparties, pass the returned addresses to labels_for_addresses. Each row carries the token Contract — a symbol alone can match look-alike clones, so pin the real token with the contract param. Amount is in TOKEN UNITS; amounts of different tokens must never be added together. Each row also carries Price_Usd - the token's USD price at the time of the transfer - and Value_Usd = Amount x Price_Usd, with Price_Status: "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check the price with price_at. BNB and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. There is no usd filter: min_amount / max_amount are in token units. For a ranking you can reason about, pin ONE token with contract, or bound the range with min_amount / max_amount. Amount_Raw is the exact amount as an integer in the token's smallest unit and Decimals its scale (Amount = Amount_Raw / 10^Decimals); Block and Tx_Index place the row in the chain. A transaction's own transfer is TOP-LEVEL, not internal, and is always included. Internal = 1 marks a transfer moved by contract code deeper inside a transaction; those are left out unless you pass include_internal=1.ConnectorOAuth
- FLOWS BETWEEN TWO ADDRESS SETS on Ethereum (eth, ETH, mainnet, L1): every successful transfer (tokens and native ETH) from any address of set A to any address of set B, and back, in ONE call - "did these wallets ever pay those wallets", "how much moved between my suspects and the exchange wallets", "which of these deposit addresses sent to that hot wallet". Pass up to 50 addresses per set separated by "|" (0xabc…|0xdef…). A longer list is not an error: the first 50 distinct addresses of each set are used and the rest are ignored - every row reports A_Addresses_Requested / A_Addresses_Used and B_Addresses_Requested / B_Addresses_Used, so compare them and split a longer set into several calls. Leave addresses_b EMPTY to get every counterparty of the A set, both directions, grouped per A address - the multi-address form of eth_flow_edges. mode="summary" (default) returns one row per (Direction, Sender, Receiver, token) with Transfers, total Amount, First_Time, Last_Time and the latest Tx, ordered by `sort`. mode="rows" returns the individual transfers newest first; page with cursor: pass the Cursor value of the LAST row, with all other arguments unchanged, to get the next page (a summary row carries no Cursor). A rows-mode row is a LEDGER LINE: besides the amount it carries Amount_Raw (the exact integer amount in the token's smallest unit) with Decimals, Block and Tx_Index, and Price_Usd (the token's USD price at the time of the transfer), Value_Usd = Amount x Price_Usd and Price_Status - "ok"; "no_price" = no price is known for this token at that time, so Price_Usd and Value_Usd are empty (never read that as zero); "suspect" = the stored price is more than twice the price one day earlier AND one day later, or less than half of both - a likely data glitch - so Value_Usd is left empty - check it with price_at. ETH and the major tokens are priced to 5 minutes, every other token has ONE price per day, so the value of a small token is approximate. On a summary row those seven columns are empty: a total over a period has no single price. Self = 1 (both modes) marks a movement whose counterparty is another address of set A - a move inside the set, not income and not spending. Direction A_TO_B = sent by an A address to a B address, B_TO_A = sent by a B address to an A address; an address listed in both sets appears in both directions. With addresses_b empty the same holds for a transfer between two A addresses: it is listed as A_TO_B for its sender AND as B_TO_A for its receiver, so never add rows of both directions together. WINDOW: the last `days` days (default 30, at most 366) ending at before_time, or now; after_time sets the start instead, within the same 366-day limit. Window_From / Window_To on every row show the range searched; for an older period set before_time. An empty result means no transfer between the sets in that window. COST: the search is keyed on set A, so put the SMALLER and less busy set in addresses_a - individual wallets, not exchange hot wallets, bridges or token contracts. If the call fails with a row-limit error ("Limit for rows ... exceeded"), swap the two sets, shorten days, or split set A. Cost also grows with the number of addresses in set A times the window. Each row carries the token Contract (empty for native ETH); a symbol alone can match look-alike clones, so pin one token with contract, or restrict to native or tokens with asset_type. Amount is in TOKEN UNITS: totals of different tokens must not be compared or added together, there is no usd filter (min_amount is in token units), and sort="amount" is only meaningful with one token pinned. To identify the addresses, pass them to labels_for_addresses.ConnectorOAuth