Scrapfly
Scrape any website, extract structured data, and collect web content at scale with AI agents
Connector by mcp.scrapfly.io · Domain verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/mcp-scrapfly-io-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: web-scraping, browser-automation
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 23 read · 26 write · 5 delete · 7 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 61
Read from the source code; the running server may list different tools.
Read 23 · Look things up without changing anything.
alert_count_activealert_getalert_listalert_metric_familiesalert_previewalert_seriescheck_if_blockedcloud_browser_screenshotcloud_browser_sessionscloud_browser_vault_getcloud_browser_vault_item_listcloud_browser_vault_list
Show 11 more tools
dropdown_optionsevaluate_scriptfind_elementsget_page_urlinfo_api_keylist_webmcp_toolsscraping_instruction_enhancedscreenshottake_screenshottake_snapshotweb_get_page
Write 26 · Create, change, send or run things.
alert_createalert_snoozealert_testalert_updatecall_webmcp_toolclickcloud_browser_closecloud_browser_downloadscloud_browser_evalcloud_browser_navigatecloud_browser_opencloud_browser_vault_create
Show 14 more tools
cloud_browser_vault_item_createcloud_browser_vault_item_updatecloud_browser_vault_service_synccloud_browser_vault_service_updatecloud_browser_vault_updatedragfillgo_backhoverpress_keyscrollscroll_to_textselect_optiontype_text
Delete 5 · Delete, drop, revoke or wipe things.
alert_deletealert_unsnoozecloud_browser_vault_deletecloud_browser_vault_item_deletecloud_browser_vault_service_unlink
Not yet classified 7 · We could not tell from the name and description.
browser_unblockcloud_browser_performancecloud_browser_vault_rotatecloud_browser_vault_service_linkcloud_browser_vault_service_testwaitweb_scrape
Network hosts it talks to 7
api.scrapfly.io· found in codebrowser.scrapfly.io· found in codegithub.com· found in codeglama.ai· found in codegoogle.com· found in codescrapfly.io· found in codeweb-scraping.dev· found in code
Files it touches
/root
Tools (61)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
alert_count_activeScrapfly Alerts — Count ActiveReturn the count of alerts in actively-firing states (triggered, pending, recovering). Excludes snoozed/ok/no_data. Optional project_uuid narrows to a single project. Backs sidebar badges — sub-millisecond.
alert_createScrapfly Alerts — CreateCreate a new alert. Two-step: call without confirm=true first to see the rendered request body, then re-call with confirm=true to commit. PROJECT BINDING — IMPORTANT: Leave project_uuid EMPTY unless the user explicitly named a non-default project. The server falls back to the caller's currently-selected project from the api-key. Do NOT pass the value of info_account.account.account_id as project_uuid — that's the account ID, not the project ID, and the server returns ERR::ALERT::PROJECT_NOT_FOUND when they don't match. RECOMMENDED WORKFLOW for picking a data-driven threshold: 1. alert_m…
alert_deleteScrapfly Alerts — DeletePermanently remove an alert definition and its evaluation history. Cannot be undone. Two-step: omit confirm to see what would be deleted, set confirm=true to commit. Only for rules the user wants gone for good. To stop notifications while keeping the rule, use `alert_update` with enabled=false (indefinite) or `alert_snooze` (auto-resumes). Read the rule with `alert_get` first so the confirmation shows the user what they are dropping.
alert_getScrapfly Alerts — GetFetch one alert definition by UUID: full rule config plus lifecycle state, snooze status, last-eval and last-notification timestamps, and notify channels. Use it to answer "why is this alert quiet / why did it fire" before editing. Use `alert_list` when you do not have the UUID yet, and `alert_series` when the question is about the metric's history rather than the rule's current configuration.
alert_listScrapfly Alerts — ListList alert definitions for the caller's account. Optional filters: project_uuid, state (ok|pending|triggered|recovering|no_data|snoozed), metric_id. Returns the full Alert rows so the model can reason about state and notification config.
alert_metric_familiesScrapfly Alerts — Metric FamiliesDiscover which metrics can be alerted on. ALWAYS call this BEFORE alert_create so you pick a valid metric_id and supply only allowed_dimensions. Returns 20+ families across products (extraction, scheduler, scrape, …) with their units, default sustained windows, and source tables. AFTER this returns: do NOT stop and summarize for the user. The user's intent is to CONFIGURE an alert — your next required step is alert_preview using the metric_id, comparator, threshold, and sustained_minutes you derived from the user's request and (optionally) monitoring_get_metrics baseline. Only stop when you h…
alert_previewScrapfly Alerts — PreviewREQUIRED step between alert_metric_families and alert_create when configuring a new alert. Run a hypothetical alert rule against historical data and return 'would-have-fired' markers WITHOUT persisting anything. Use this to validate that a proposed threshold isn't too noisy / too quiet. AFTER this returns: do NOT stop. If the would-have-fired count over the lookback window is reasonable (typically 0-3 fires over 24h for a normal-noise rule), proceed to alert_create. If it fires too often (>10/24h) or never (0/24h), adjust threshold and re-preview. Only stop the agent loop after alert_create h…
alert_seriesScrapfly Alerts — SeriesFetch the metric time series + state-change transitions for one alert. range_minutes is the lookback (default 240=4h, max 10080=7d). Out-of-bound values are clamped server-side.
alert_snoozeScrapfly Alerts — SnoozeMute an alert's notifications either for a fixed window (minutes) or until the next OK transition (until_resolved=true). Exactly one of minutes / until_resolved must be set. The rule keeps evaluating and keeps tracking state — only delivery is suppressed. Two-step confirmation. Right tool for "we know, we're fixing it, stop paging us". For an indefinite pause use `alert_update` enabled=false; to drop the rule entirely use `alert_delete`. Reverse with `alert_unsnooze`.
alert_testScrapfly Alerts — Test NotifySend a one-shot test notification to every configured channel WITHOUT touching alert state. Useful for validating webhook URLs and email addresses end-to-end. Two-step confirmation since this DOES dispatch real messages.
alert_unsnoozeScrapfly Alerts — UnsnoozeClear an active snooze so the alert resumes notification delivery on the next eval tick. Safe to call on an un-snoozed alert — it is a no-op. Two-step confirmation. This only lifts a snooze; it does NOT re-enable a rule turned off with `alert_update` enabled=false. If the alert is still silent afterwards, check `alert_get` for enabled=false. Note `alert_update` auto-snoozes for sustained_minutes after every edit, so a rule that just got tuned may need this to speak up immediately.
alert_updateScrapfly Alerts — UpdatePartially update an alert. Only non-nil fields are applied. Server auto-snoozes for sustained_minutes after every edit to prevent notification storms during tuning. Two-step: omit confirm to see the patch payload, set confirm=true to commit.
browser_unblockOpen Browser with Anti-Bot BypassSame as `cloud_browser_open` but runs the URL through Scrapfly's anti-bot bypass first (Cloudflare, DataDome, PerimeterX, Akamai, etc.). Use when a plain `cloud_browser_open` landed on a challenge/captcha page, or when you already know the target is anti-bot protected. On success you get a stateful browser session with the same full action set available (`take_snapshot`, `click`, `fill`, `call_webmcp_tool`, …) — pick the right follow-up exactly as you would after `cloud_browser_open`.
call_webmcp_toolExecute a page-registered MCP toolInvoke a WebMCP tool that the current page registered with `navigator.modelContext.registerTool()`. Preferred over clicking/scraping when the page exposes a matching tool — it's the author's declared API for that action and avoids DOM fragility. Input must satisfy the schema returned by `list_webmcp_tools` (also on the open/navigate response). Tool runs in the page's main world.
check_if_blockedAntibot Block DetectorGiven a scrape result (URL + status + headers + body), decide if it is actually a block page. Runs the Scrapfly classification API which detects the major anti-bot products (Cloudflare, DataDome, PerimeterX, Akamai, Kasada, Imperva, AWS WAF, F5 Shape, and more). Returns `is_blocked` and, when known, the matching `antibot` vendor. Costs 1 API credit per call. Run after a `web_scrape` / `web_get_page` whenever the response looks suspicious — a 200 with empty/tiny body, unexpected challenge markup — before feeding the content back to the user. If blocked, send the scrape with the Unblocker: `prox…
Show 46 more tools
clickClick on an elementClick an element in the active cloud browser session. Requires a `uid` obtained from `take_snapshot` output — uids are stable for that snapshot only. Typical flow: take_snapshot → locate element by label/text → click(uid). After the click, the page may navigate or reveal new elements; take another snapshot before your next action if the DOM likely changed.
cloud_browser_closeScrapfly Cloud Browser — Close SessionClose the cloud-browser session and release its resources. Call this ONLY when the user explicitly asks to end / close / stop / "we're done". When a task finishes normally, leave the session open — the user has a dedicated UI control for closing and may keep going in a follow-up turn.
cloud_browser_downloadsScrapfly Cloud Browser — DownloadsInspect files that have been downloaded during the current browser session (e.g. after clicking a link that triggered a download, or submitting a form that returned an attachment). Without `filename`, returns metadata for every captured download. With `filename`, returns the file's bytes base64-encoded. Only relevant when a download was triggered inside the session — for fetching a file whose URL you already know, use `web_get_page` / `web_scrape` instead.
cloud_browser_evalScrapfly Cloud Browser — Evaluate JavaScriptRun JavaScript in the active cloud-browser session and return its value. Equivalent to `evaluate_script`; prefer `evaluate_script` in new code. Reads only — do NOT use for clicking/filling.
cloud_browser_navigateScrapfly Cloud Browser — NavigateNavigate the active cloud-browser session to a new URL. Re-uses the same browser (cookies, storage, session state preserved) and refreshes the WebMCP tool list because page-registered tools are scoped to the current document. Returns a fresh snapshot. Use this instead of opening a new session when you want to stay signed in or keep context across URLs.
cloud_browser_openScrapfly Cloud Browser — Open SessionStart a stateful real-browser session at a URL. Use this when the task requires *interaction* with a page — the user said "open", "go to", "navigate to", "log in", or the work needs clicking, form filling, or multi-step navigation. Returns the initial accessibility snapshot plus the page's registered WebMCP tools. Do NOT use this for a plain "download <url>" or "fetch <url>" where the URL already points at the asset and no interaction is needed — use `web_get_page` (simple) or `web_scrape` (with options) instead. Those are cheaper and faster. Once a session is open, the FULL set of CDP-backe…
cloud_browser_performanceScrapfly Cloud Browser — PageSpeed Lab RunPageSpeed Insights-style lab run: cold-cache reload with mobile throttling (Moto G4 + slow 4G + 4× CPU) by default, or desktop wired. Returns Core Web Vitals (LCP, FCP, CLS, TTFB, INP), Speed Index, Total Blocking Time, Time To Interactive, resource waterfall with render-blocking detection, diagnostics (DOM nodes, main-thread ms, total byte weight), Lighthouse-style performance score (0-100), and Good/Needs-Improvement/Poor ratings per PSI thresholds. Use after cloud_browser_open. Inputs: preset ('mobile'|'desktop'), timeout_ms (max 30000).
cloud_browser_screenshotScrapfly Cloud Browser — ScreenshotPNG of the active cloud-browser session. Optional `selector` is a CSS selector (e.g. `img[alt='Scrapfly Logo']`, `#header`, `.logo img`) — NOT a uid from `take_snapshot`. Without `selector`, captures the full viewport (or full page if `full_page: true`). For element-level shots where you only have a uid, prefer `take_screenshot` after `scroll`-ing the element into view; `take_screenshot` is the newer flat-API equivalent and is preferred in general.
cloud_browser_sessionsScrapfly Cloud Browser — List SessionsList active cloud-browser sessions for this user with their URLs, registered WebMCP tools, and expiry. Useful when you lost track of what's open, or to decide between reusing an existing session and opening a fresh one.
cloud_browser_vault_createScrapfly Cloud Browser Vault — CreateCreate an empty credential vault. The response carries the vault key once. Scrapfly stores no copy, so it cannot be retrieved again and losing it makes every item in the vault unreadable: show it to the user and have them save it before adding items. Two-step confirmation.
cloud_browser_vault_deleteScrapfly Cloud Browser Vault — DeleteDelete a vault and every item it holds. This cannot be undone, and any Cloud Browser session that names the vault stops resolving credentials. Prefer cloud_browser_vault_item_delete when only one credential is unwanted. Two-step confirmation.
cloud_browser_vault_getScrapfly Cloud Browser Vault — GetFetch one vault: name, description, item count and, for a linked vault, the 1Password selection rules plus last sync time, sync status, sync error and counts. No secret material is returned. Use cloud_browser_vault_list when the id is unknown, cloud_browser_vault_item_list for the items themselves.
cloud_browser_vault_item_createScrapfly Cloud Browser Vault — Create ItemAdd one credential to a vault. The vault key is required because the secret is sealed under it, and the server verifies the key before writing, so a wrong key fails here instead of leaving a row nothing can open. type is password, passkey, cookie, totp or blob, and secret must carry that type's fields. Two-step confirmation.
cloud_browser_vault_item_deleteScrapfly Cloud Browser Vault — Delete ItemDelete one item from a vault. This cannot be undone and the credential is gone from every later Cloud Browser session. Items owned by a linked service are refused with a conflict; unlink the service first or drop the item upstream. Two-step confirmation.
cloud_browser_vault_item_listScrapfly Cloud Browser Vault — List ItemsList a vault's items: id, type, label, origin, username, provenance and timestamps. Secrets stay encrypted under the customer-held key, which Scrapfly does not have, and the ciphertext is dropped from this result, so no plaintext is ever returned. Rows whose source is not manual belong to the linked service and refuse edits.
cloud_browser_vault_item_updateScrapfly Cloud Browser Vault — Update ItemPatch one vault item. Fields you send overwrite the row. Sending secret replaces the stored secret with no way back and requires the vault key; a label, origin, username or metadata patch does not. Items owned by a linked service are refused with a conflict. Two-step confirmation.
cloud_browser_vault_listScrapfly Cloud Browser Vault — ListList the Cloud Browser credential vaults this API key can see in its project and environment, with item counts, vault_type, link state and last sync status. No secret material is returned. Start here to resolve a vault id for every other vault tool.
cloud_browser_vault_rotateScrapfly Cloud Browser Vault — Rotate KeyRotate the vault key: send the current key, get a fresh one back once. The previous key is invalidated immediately, so every stored config and script still holding it stops opening the vault. Scrapfly keeps no copy of either key. Two-step confirmation.
cloud_browser_vault_service_linkScrapfly Cloud Browser Vault — Link 1PasswordLink a vault to 1Password so its items mirror an upstream vault. The vault key is required and verified first: the service-account token is sealed under it, and a well-formed wrong key would link the vault and leave a token every later sync fails to open. Run cloud_browser_vault_service_test first to pick the upstream vault. Two-step confirmation.
cloud_browser_vault_service_syncScrapfly Cloud Browser Vault — Sync NowSync a linked vault from 1Password now, bypassing the freshness window and the one hour back-off a failed run leaves behind. Needs the vault key to open the sealed token. Returns imported, updated, deleted, skipped, unmirrored, status and warnings. The server budget is 25 seconds.
cloud_browser_vault_service_testScrapfly Cloud Browser Vault — Test LinkProbe a 1Password service-account token and list the upstream vaults it can reach, changing nothing. The vault key is required. Pass token to check one that is not stored yet, or omit it to probe the token already sealed in the vault. Every call spends the provider's rate-limit budget. The server budget is 10 seconds.
cloud_browser_vault_service_unlinkScrapfly Cloud Browser Vault — Unlink 1PasswordUnlink a vault from 1Password. keep_items defaults to true and leaves the mirrored rows behind as manual items; keep_items=false deletes every mirrored row and that cannot be undone. The sealed service-account token is deleted either way. Two-step confirmation.
cloud_browser_vault_service_updateScrapfly Cloud Browser Vault — Update LinkChange a linked vault's 1Password selection rules, rotate its service-account token, or both. linked_service_data replaces the stored document wholesale, so send every field you want kept. The vault key is required only when a token is sent, and token_item_id in the body is ignored. Two-step confirmation.
cloud_browser_vault_updateScrapfly Cloud Browser Vault — UpdateRename a vault or change its description. Items, the vault key and any linked service stay as they are. A rename breaks session configs that select the vault by its old name. Use cloud_browser_vault_service_update for 1Password selection rules. Two-step confirmation.
dragDrag and dropDrag one element onto another (both by `uid`). Use for HTML5 drag-and-drop interfaces — reordering lists, uploading via drop zones, Trello-style boards. Rare outside those cases.
dropdown_optionsList options of a <select> elementReturn all <option> entries (value, label, selected) of a native HTML <select> element by uid. Use before select_option to discover available choices when the snapshot's `options="a|b|c"` enrichment is truncated or missing.
evaluate_scriptRun JavaScriptEvaluate a JS expression in the page and return its value. Use for *reading*: extract a computed value, read localStorage, inspect window state, pull structured data the snapshot doesn't expose. Do NOT use for interaction — `click`/`fill`/`type_text` are the supported paths and survive anti-bot checks. Script runs as `(() => <your expr>)()` in the main world.
fillFill an input fieldSet the value of an input/textarea in one shot (faster than `type_text`). Prefer this for forms, search boxes, addresses. Requires `uid` from a recent `take_snapshot`. Use `type_text` instead only when the page has a live autocomplete that needs per-keystroke events.
find_elementsCSS-selector element finderReturn up to 20 elements matching a CSS selector with their tag, text excerpt (80 chars), and key attributes. Use when take_snapshot doesn't expose what you need — typically for non-interactive content selection (`<article>`, `.product-card`, `[data-id]`). Returns an empty list rather than an error when nothing matches.
get_page_urlGet current page URLReturn the browser's current URL and page title. Cheap; use it to confirm a navigation landed where you expected, or to capture the final URL after redirects before reporting back to the user.
go_backBrowser back buttonNavigate one step back in the browser's history (equivalent to clicking the browser's back arrow). Returns an error if there's nothing to go back to. After this call, take_snapshot to see the previous page's elements — DOM uids from prior snapshots are stale.
hoverHover over an elementMove the mouse over an element (by `uid` from `take_snapshot`). Use when a page reveals menus, tooltips, or controls only on hover — otherwise `click` is what you want.
info_api_keyScrapfly Account API KeyReveal the Scrapfly API key this MCP server is authenticated with, so the user can paste it into their own code (SDK snippet, curl, CI secret). The key is a live credential: show it only when the user explicitly asked for their key, and never echo it back in later turns or embed it in generated files that get committed. The other tools already authenticate themselves — you never need this to call `web_scrape`, `screenshot` or `cloud_browser_open`. For plan / credit / quota questions use `info_account` instead.
list_webmcp_toolsList page-registered MCP toolsList the WebMCP tools the current page has registered via `navigator.modelContext.registerTool()`. Returns name, description, and input schema for each. When a page exposes these, they are an author-provided programmatic API — prefer calling one via `call_webmcp_tool` over DOM scraping or UI clicks. The `cloud_browser_open` and `cloud_browser_navigate` responses already surface this list, so you rarely need to call this directly.
press_keyPress a keyboard keySend a single key to the focused element. Accepts names like Enter, Tab, Escape, ArrowDown, Backspace. Typical use: submit a form (Enter), navigate a listbox (ArrowDown), close a modal (Escape).
scraping_instruction_enhancedScrapfly Scraping tools instructions // enhanced promptReturn a concise cheat-sheet of Scrapfly's scraping options (proxy pool, render_js, country, extraction) and which of `web_scrape` / `web_get_page` accepts each. Optional — useful on an unfamiliar target so the chosen options are right the first time.
screenshotScrapfly Screenshot ToolOne-shot PNG screenshot of a URL. Stateless — loads the page, renders, returns the image. Inputs: `url` (required, must be http:// or https://), `capture` (optional — either 'fullpage' or a CSS selector such as `img[alt='Logo']`). There is NO `selector` parameter — use `capture` for element-cropped shots. When to use this vs `cloud_browser_open` + `cloud_browser_screenshot`: • Use `screenshot` only for truly stateless captures ("give me a screenshot of <url>") where the user does not need to see a live browser panel and will not follow up with more actions on the same page. • Prefer `clou…
scrollScroll the pageScroll either (a) a specific element into view by `uid`, or (b) the page by a pixel delta, or (c) to bottom via selector type "bottom". Use (a) before clicking an off-screen element; use (c) to trigger infinite-scroll pagination; retake a snapshot afterwards since new content typically appears.
scroll_to_textScroll until text is visibleScroll the active page until the first element whose textContent contains the given substring is in the viewport. Case-insensitive substring match. No-op if the text is already visible. Cheap to call before any click on content that may be below the fold (long articles, lazy-loaded lists, paginated tables). Returns the matched element's tag and a 80-char text excerpt, or an error if not found.
select_optionSelect a dropdown optionPick an option from a native HTML `<select>` by the dropdown's `uid` and the option's `value` attribute (not its visible label). For custom dropdowns built out of divs, use `click` instead.
take_screenshotTake a screenshotCapture a PNG of the current cloud-browser page. Use when the user asks for a visual, or when the page's information (charts, diagrams, styled layout) isn't well-represented by the accessibility tree. For structural/text understanding, `take_snapshot` is cheaper and more actionable.
take_snapshotGet page content snapshotReturn the current page's accessibility tree as structured text with element uids. This is your primary way to see and act on the page — read it to find links, buttons, inputs, headings, then use their uids with `click`, `fill`, `hover`, etc. Cheap — call it freely whenever you're unsure what's on the page or after an action that likely changed the DOM. Do NOT guess uids.
type_textType text with human timingType text character-by-character into the currently focused input (use after clicking/focusing). Slower than `fill` but fires per-keystroke events — needed for live autocompletes, search-as-you-type, or inputs that reject setValue-style writes.
waitPause executionSleep for N seconds before the next action. Use sparingly — most pages can be interacted with as soon as the snapshot returns. Useful for waiting on animations to settle, on lazy-loaded carousels, or on deliberate rate-limiting between repeated form submissions. Capped at 10s server-side; longer sleeps will be clamped.
web_get_pageScrapfly Quick Page Fetch ToolOne-shot fetch of a URL with sane defaults. Stateless. Right choice for simple "get me the page / the JSON / the file at X" asks — including plain file downloads where the URL already points at the asset. Falls back to `web_scrape` when you need to tune headers/JS-rendering/proxy; to `cloud_browser_open` when the task needs interaction with the page. Proxy pools: `basic` (datacenter proxies, Unblocker off), `unblocker` (residential proxies and the Unblocker), `unblocker_ultra` (the same, and the only pool a target or an anti-bot protection with a price of its own accepts) and `auto` (the API p…
web_scrapeScrapfly Advanced Scraping ToolOne-shot fetch of a URL with full control (headers, JS rendering, country, proxy pool). Stateless — returns the response body and metadata, no persistent session. This is the right tool whenever the task is "get the content/bytes at this URL": downloading a file, fetching an HTML page, calling a JSON endpoint, grabbing a sitemap. Only switch to `cloud_browser_open` when the task requires multi-step interaction with a page (clicking, form filling, navigating between pages, logging in). Use `scraping_instruction_enhanced` first if you're uncertain which options to set. Prefer `web_get_page` for …
Compare and alternatives
Featured in
Signals
- Stars
- 14
- Forks
- 2
- Open issues
- 0
- Last commit
- Oct 23, 2026 (5 days ago)
- Last release
- Dec 10, 2025 (10 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.scrapfly.mcp/mcp- Version
- 1.0.0
- Auth
- No auth
- Packages
- npm scrapfly-mcp
- License
- License unknown
- Repository
- github.com/scrapfly/scrapfly-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Scrapfly MCP server. Agent Mart. https://agentmart.dev/connectors/mcp-scrapfly-io-mcp (last updated 2026-10-24)