FeelingSurf
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Manage your FeelingSurf traffic exchange account: sites, targeting, templates, sources and proxies.
| Author | fr.feelingsurf |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 298 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"FeelingSurf": {
"url": "https://api.feelingsurf.fr/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (34)
get_accountread-onlyGet the authenticated account. Account summary plus the earn-side rollup (credits earned today / last 7 days), active FeelingSurfViewer session count, and site-slot usage.
Hints: read-only yes · destructive no · idempotent yes · open-world no
update_accountdestructiveUpdate account settings. Update non-sensitive account settings (e.g. `visit_own_sites`, `timezone`). Writable account settings. Provide at least one. Email, password and billing are intentionally not editable via the API.
Parameters:
currency— string — Your billing currency.language— string — Your account language (ISO code).timezone— ['string', 'null'] — An IANA timezone name (e.g. "Europe/Paris"), or null to clear (scheduling then uses UTC).newsletter— boolean — Newsletter email opt-in.invoice_emails— boolean — Whether invoice emails are sent.visit_own_sites— boolean — Whether the app also surfs your own sites.
Hints: read-only no · destructive yes · idempotent yes · open-world no
list_surf_sessionsread-onlyList your FeelingSurfViewer sessions. Recent FeelingSurfViewer sessions on your account (the earning side), most recent first. These are your own FeelingSurfViewer instances and their IPs.
Parameters:
limit— integer — Page size (clamped to 1..200).offset— integer — Number of items to skip.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_referralsread-onlyGet your referral program. Your shareable referral link, how many users you've referred, your commission rate, and commission credits earned.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_traffic_availabilityread-onlyTraffic availability by country. Surfer-traffic availability per country, to guide a site's or template's location targeting. A country with `availability: none` has no surfers delivering visits, so targeting it yields nothing. A fixed reference dataset (~250 countries), returned in full — not paginated.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_sitesread-onlyList your sites.
Parameters:
limit— integer — Page size (clamped to 1..200).offset— integer — Number of items to skip.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_siteread-onlyGet one site.
Parameters:
id(required) — integer — Site identifier.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_siteCreate a site. Only `url` is required; every other field defaults to a new-site configuration. Exceeding the account's slot count returns 403 `site_limit_reached`. Fields for creating a site. Only `url` is required; all others default to a new-site configuration. When `template_id` is given, that template's settings seed the defaults and any field set explicitly here overrides them (shallow, per top-level key).
Parameters:
url(required) — string — The website's URL.name— ['string', 'null'] — User-chosen name; null clears it.labels— array — IDs of labels to assign.limits— object — Visit caps; null means no limit.paused— boolean — Pause or resume visit delivery.actions— object — Auto-actions performed during visits.cookies— array — Cookies to set before each visit; replaces the stored list.devices— object — Device targeting split, as percentages summing to 100.browsing— object — Browsing options.schedule— object — Active-hours scheduling.template_id— integer — A site template to apply as the base configuration. Must be one of your own templates; an unknown id returns 422. The template's settings become the defaults; any field you also send in this request overrides the template's value for that whole field (shallow merge, per top-level field).visit_duration— object — Visit duration range, in seconds.blocked_domains— object — Domains blocked during visits.traffic_quality— object — Traffic quality controls.traffic_sources— array — IDs of traffic sources to assign; an empty list assigns the default "Direct visits" source.location_targeting— object — Country/continent targeting.visit_distribution— string — How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
Hints: read-only no · destructive no · idempotent no · open-world no
update_sitedestructiveUpdate a site. Writable fields of a site. For PATCH, provide at least one; only the fields present are changed.
Parameters:
id(required) — integer — Site identifier.name— ['string', 'null'] — User-chosen name; null clears it.labels— array — IDs of labels to assign.limits— object — Visit caps; null means no limit.paused— boolean — Pause or resume visit delivery.actions— object — Auto-actions performed during visits.cookies— array — Cookies to set before each visit; replaces the stored list.devices— object — Device targeting split, as percentages summing to 100.browsing— object — Browsing options.schedule— object — Active-hours scheduling.visit_duration— object — Visit duration range, in seconds.blocked_domains— object — Domains blocked during visits.traffic_quality— object — Traffic quality controls.traffic_sources— array — IDs of traffic sources to assign; an empty list assigns the default "Direct visits" source.location_targeting— object — Country/continent targeting.visit_distribution— string — How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
Hints: read-only no · destructive yes · idempotent yes · open-world no
delete_sitedestructiveDelete a site.
Parameters:
id(required) — integer — Site identifier.
Hints: read-only no · destructive yes · idempotent yes · open-world no
list_deleted_sitesread-onlyList sites you can still restore. Sites you deleted within the retention window, most recently deleted first. Sites removed because a plan downgrade reduced your slot count are not listed: those come back on their own when you upgrade again.
Parameters:
limit— integer — Page size (clamped to 1..200).offset— integer — Number of items to skip.
Hints: read-only yes · destructive no · idempotent yes · open-world no
restore_siteRestore a deleted site. Brings back a site you deleted, with the settings it had. Geo targeting, blocked domains and actions your plan cannot use stay suspended and come back empty. Returns 404 once the retention window has passed, and 403 `site_limit_reached` when you have no free slot.
Parameters:
id(required) — integer — Site identifier.
Hints: read-only no · destructive no · idempotent no · open-world no
list_site_screenshotsread-onlyList a site's FeelingSurfViewer screenshots. Screenshots captured while the app surfed the site. Returns the most recent (up to 24); this list is not paginated.
Parameters:
id(required) — integer — Site identifier.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_screenshotread-onlyGet a screenshot image. Returns the image FeelingSurfViewer captured. The uid is the last path segment of an `images[].url` from list_site_screenshots.
Parameters:
uid(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_site_templatesread-onlyList your site templates.
Parameters:
limit— integer — Page size (clamped to 1..200).offset— integer — Number of items to skip.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_site_templateread-onlyGet one site template.
Parameters:
id(required) — integer — Resource identifier.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_site_templateCreate a site template. A template is a reusable bundle of site settings (no url/paused/labels). Only `name` is required; every other field defaults to a new-template configuration. Exceeding the per-account cap returns 403 `template_limit_reached`. Fields for creating a site template. Only `name` is required; all others default to a new-template configuration.
Parameters:
name(required) — string — Template name.limits— object — Visit caps; null means no limit.actions— object — Auto-actions performed during visits.cookies— array — Cookies to set before each visit; replaces the stored list.devices— object — Device targeting split, as percentages summing to 100.browsing— object — Browsing options.schedule— object — Active-hours scheduling.visit_duration— object — Visit duration range, in seconds.blocked_domains— object — Domains blocked during visits.traffic_quality— object — Traffic quality controls.traffic_sources— array — IDs of traffic sources to assign.location_targeting— object — Country/continent targeting.visit_distribution— string — How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
Hints: read-only no · destructive no · idempotent no · open-world no
update_site_templatedestructiveUpdate a site template. Writable fields of a site template. For PATCH, provide at least one; only the fields present are changed.
Parameters:
id(required) — integer — Resource identifier.name— ['string', 'null'] — Template name.limits— object — Visit caps; null means no limit.actions— object — Auto-actions performed during visits.cookies— array — Cookies to set before each visit; replaces the stored list.devices— object — Device targeting split, as percentages summing to 100.browsing— object — Browsing options.schedule— object — Active-hours scheduling.visit_duration— object — Visit duration range, in seconds.blocked_domains— object — Domains blocked during visits.traffic_quality— object — Traffic quality controls.traffic_sources— array — IDs of traffic sources to assign.location_targeting— object — Country/continent targeting.visit_distribution— string — How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
Hints: read-only no · destructive yes · idempotent yes · open-world no
delete_site_templatedestructiveDelete a site template.
Parameters:
id(required) — integer — Resource identifier.
Hints: read-only no · destructive yes · idempotent yes · open-world no
list_traffic_sourcesread-onlyList your traffic sources. Your own sources plus the shared/built-in ones, referenced by id from a site's `traffic_sources`.
Parameters:
limit— integer — Page size (clamped to 1..200).offset— integer — Number of items to skip.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_traffic_sourceread-onlyGet one traffic source. Works for your own sources and for the shared defaults (e.g. id 1, "Direct visits").
Parameters:
id(required) — integer — Resource identifier.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_traffic_sourceCreate a traffic source. Exceeding the per-account source cap returns 403 `limit_reached`.
Parameters:
name(required) — string — Name of the traffic source; a default is shown when unset.referer(required) — string — The referer to report to the target site (a domain or full URL, e.g. `https://www.google.com/`); the scheme is stripped on save.
Hints: read-only no · destructive no · idempotent no · open-world no
update_traffic_sourcedestructiveUpdate a traffic source. Provide at least one field.
Parameters:
id(required) — integer — Resource identifier.name— string — Name of the traffic source; a default is shown when unset.referer— string — The referer to report to the target site (a domain or full URL, e.g. `https://www.google.com/`); the scheme is stripped on save.
Hints: read-only no · destructive yes · idempotent yes · open-world no
delete_traffic_sourcedestructiveDelete a traffic source.
Parameters:
id(required) — integer — Resource identifier.
Hints: read-only no · destructive yes · idempotent yes · open-world no
list_proxiesread-onlyList your proxies. Every proxy on your account, oldest first.
Parameters:
limit— integer — Page size (clamped to 1..200).offset— integer — Number of items to skip.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_proxyread-onlyGet one proxy.
Parameters:
id(required) — integer — Resource identifier.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_proxyAdd a proxy. Registers a static proxy. FeelingSurfViewer checks it before any session goes through it, so a new proxy starts with `proven` false. Exceeding the per-account proxy cap returns 403 `proxy_limit_reached`; a host and port already on your account returns 422 `validation_error`.
Parameters:
host(required) — string — The proxy's public IPv4 or IPv6 address. Hostnames and private addresses are rejected; IPv6 is stored in its compressed form.port(required) — integer — The proxy's port.type— string — The proxy protocol, case-insensitive.password— string — Password for an `http` or `https` proxy. Not allowed with `socks5`.username— string — Username for an `http` or `https` proxy. Not allowed with `socks5`.
Hints: read-only no · destructive no · idempotent no · open-world no
update_proxydestructivePause or resume a proxy. Only `enabled` can change. Pausing or resuming clears `last_error` and its error history, and a resumed proxy is checked again at once, so this also brings back a proxy that was switched off after failing. To change the host, port or credentials, delete the proxy and add it again.
Parameters:
id(required) — integer — Resource identifier.enabled(required) — boolean — False pauses the proxy, true resumes it.
Hints: read-only no · destructive yes · idempotent yes · open-world no
delete_proxydestructiveRemove a proxy.
Parameters:
id(required) — integer — Resource identifier.
Hints: read-only no · destructive yes · idempotent yes · open-world no
list_labelsread-onlyList your labels. Referenced by id from a site's `labels`.
Parameters:
limit— integer — Page size (clamped to 1..200).offset— integer — Number of items to skip.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_labelread-onlyGet one label.
Parameters:
id(required) — integer — Resource identifier.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_labelCreate a label. Exceeding the per-account label cap returns 403 `limit_reached`.
Parameters:
name(required) — string — Label name.color(required) — string — Label color.description— ['string', 'null'] — Optional notes.
Hints: read-only no · destructive no · idempotent no · open-world no
update_labeldestructiveUpdate a label. Provide at least one field.
Parameters:
id(required) — integer — Resource identifier.name— string — Label name.color— string — Label color.description— ['string', 'null'] — Optional notes.
Hints: read-only no · destructive yes · idempotent yes · open-world no
delete_labeldestructiveDelete a label.
Parameters:
id(required) — integer — Resource identifier.
Hints: read-only no · destructive yes · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.