# FeelingSurf (remote · api.feelingsurf.fr)

Manage your FeelingSurf traffic exchange account: sites, targeting, templates, sources and proxies.

- Trust score: 91/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.feelingsurf.fr`: 91/100 (this document), [markdown](https://verifymcp.io/servers/fr-feelingsurf-feelingsurf/api.md), [page](https://verifymcp.io/servers/fr-feelingsurf-feelingsurf/api)

## Channel facts

- Endpoint: `https://api.feelingsurf.fr/mcp`
- Transports: `streamable-http`
- Auth: `required (not validated)`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 78/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 3081 tokens (~90/item across 34 items; 34 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 97/100
  - Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 99% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the FeelingSurf MCP server?

FeelingSurf is a hosted endpoint at https://api.feelingsurf.fr/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http fr-feelingsurf-feelingsurf 'https://api.feelingsurf.fr/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "fr-feelingsurf-feelingsurf": {
      "url": "https://api.feelingsurf.fr/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "fr-feelingsurf-feelingsurf": {
      "type": "http",
      "url": "https://api.feelingsurf.fr/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.fr-feelingsurf-feelingsurf]
url = "https://api.feelingsurf.fr/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "fr-feelingsurf-feelingsurf": {
      "type": "remote",
      "url": "https://api.feelingsurf.fr/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add fr-feelingsurf-feelingsurf --url 'https://api.feelingsurf.fr/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  fr-feelingsurf-feelingsurf:
    url: "https://api.feelingsurf.fr/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "fr-feelingsurf-feelingsurf": {
      "Transport": "http",
      "Url": "https://api.feelingsurf.fr/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add fr-feelingsurf-feelingsurf -t streamable-http -u 'https://api.feelingsurf.fr/mcp'
```

### Other

```json
{
  "mcpServers": {
    "fr-feelingsurf-feelingsurf": {
      "type": "http",
      "url": "https://api.feelingsurf.fr/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 91, +1)

No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 90, 0)

- [security] Tool “list_site_screenshots” rewrote its description, which is the text the model reads

### 2026-11-02 (score 90, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 89, +1)

No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 88, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (34)

### `get_account` (~43 tokens)

Get the authenticated account

Get the authenticated account. Account summary plus the earn-side rollup (credits earned today / last 7 days), active FeelingSurfViewer session count, and site-slot usage.

### `update_account` (~151 tokens)

Update account settings

Update 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.

Input parameters:

- `currency` (string): Your billing currency.
- `invoice_emails` (boolean): Whether invoice emails are sent.
- `language` (string): Your account language (ISO code).
- `newsletter` (boolean): Newsletter email opt-in.
- `timezone` (string|null): An IANA timezone name (e.g. "Europe/Paris"), or null to clear (scheduling then uses UTC).
- `visit_own_sites` (boolean): Whether the app also surfs your own sites.

### `list_surf_sessions` (~76 tokens)

List your FeelingSurfViewer sessions

List your FeelingSurfViewer sessions. Recent FeelingSurfViewer sessions on your account (the earning side), most recent first. These are your own FeelingSurfViewer instances and their IPs.

Input parameters:

- `limit` (integer): Page size (clamped to 1..200).
- `offset` (integer): Number of items to skip.

### `get_referrals` (~35 tokens)

Get your referral program

Get your referral program. Your shareable referral link, how many users you've referred, your commission rate, and commission credits earned.

### `get_traffic_availability` (~70 tokens)

Traffic availability by country

Traffic 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.

### `list_sites` (~41 tokens)

List your sites

List your sites.

Input parameters:

- `limit` (integer): Page size (clamped to 1..200).
- `offset` (integer): Number of items to skip.

### `get_site` (~21 tokens)

Get one site

Get one site.

Input parameters:

- `id` (integer, required): Site identifier.

### `create_site` (~407 tokens)

Create a site

Create 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).

Input parameters:

- `actions` (object): Auto-actions performed during visits.
- `blocked_domains` (object): Domains blocked during visits.
- `browsing` (object): Browsing options.
- `cookies` (array): Cookies to set before each visit; replaces the stored list.
- `devices` (object): Device targeting split, as percentages summing to 100.
- `labels` (array): IDs of labels to assign.
- `limits` (object): Visit caps; null means no limit.
- `location_targeting` (object): Country/continent targeting.
- `name` (string|null): User-chosen name; null clears it.
- `paused` (boolean): Pause or resume visit delivery.
- `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…
- `traffic_quality` (object): Traffic quality controls.
- `traffic_sources` (array): IDs of traffic sources to assign; an empty list assigns the default "Direct visits" source.
- `url` (string, required): The website's URL.
- `visit_distribution` (string): How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
- `visit_duration` (object): Visit duration range, in seconds.

### `update_site` (~271 tokens)

Update a site

Update a site. Writable fields of a site. For PATCH, provide at least one; only the fields present are changed.

Input parameters:

- `actions` (object): Auto-actions performed during visits.
- `blocked_domains` (object): Domains blocked during visits.
- `browsing` (object): Browsing options.
- `cookies` (array): Cookies to set before each visit; replaces the stored list.
- `devices` (object): Device targeting split, as percentages summing to 100.
- `id` (integer, required): Site identifier.
- `labels` (array): IDs of labels to assign.
- `limits` (object): Visit caps; null means no limit.
- `location_targeting` (object): Country/continent targeting.
- `name` (string|null): User-chosen name; null clears it.
- `paused` (boolean): Pause or resume visit delivery.
- `schedule` (object): Active-hours scheduling.
- `traffic_quality` (object): Traffic quality controls.
- `traffic_sources` (array): IDs of traffic sources to assign; an empty list assigns the default "Direct visits" source.
- `visit_distribution` (string): How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
- `visit_duration` (object): Visit duration range, in seconds.

### `delete_site` (~21 tokens)

Delete a site

Delete a site.

Input parameters:

- `id` (integer, required): Site identifier.

### `list_deleted_sites` (~83 tokens)

List sites you can still restore

List 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.

Input parameters:

- `limit` (integer): Page size (clamped to 1..200).
- `offset` (integer): Number of items to skip.

### `restore_site` (~80 tokens)

Restore a deleted site

Restore 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.

Input parameters:

- `id` (integer, required): Site identifier.

### `list_site_screenshots` (~69 tokens)

List a site's FeelingSurfViewer screenshots

List 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. Empty for a site whose `screenshots_disabled` is true.

Input parameters:

- `id` (integer, required): Site identifier.

### `get_screenshot` (~50 tokens)

Get a screenshot image

Get a screenshot image. Returns the image FeelingSurfViewer captured. The uid is the last path segment of an `images[].url` from list_site_screenshots.

Input parameters:

- `uid` (string, required)

### `list_site_templates` (~43 tokens)

List your site templates

List your site templates.

Input parameters:

- `limit` (integer): Page size (clamped to 1..200).
- `offset` (integer): Number of items to skip.

### `get_site_template` (~23 tokens)

Get one site template

Get one site template.

Input parameters:

- `id` (integer, required): Resource identifier.

### `create_site_template` (~273 tokens)

Create a site template

Create 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.

Input parameters:

- `actions` (object): Auto-actions performed during visits.
- `blocked_domains` (object): Domains blocked during visits.
- `browsing` (object): Browsing options.
- `cookies` (array): Cookies to set before each visit; replaces the stored list.
- `devices` (object): Device targeting split, as percentages summing to 100.
- `limits` (object): Visit caps; null means no limit.
- `location_targeting` (object): Country/continent targeting.
- `name` (string, required): Template name.
- `schedule` (object): Active-hours scheduling.
- `traffic_quality` (object): Traffic quality controls.
- `traffic_sources` (array): IDs of traffic sources to assign.
- `visit_distribution` (string): How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
- `visit_duration` (object): Visit duration range, in seconds.

### `update_site_template` (~232 tokens)

Update a site template

Update a site template. Writable fields of a site template. For PATCH, provide at least one; only the fields present are changed.

Input parameters:

- `actions` (object): Auto-actions performed during visits.
- `blocked_domains` (object): Domains blocked during visits.
- `browsing` (object): Browsing options.
- `cookies` (array): Cookies to set before each visit; replaces the stored list.
- `devices` (object): Device targeting split, as percentages summing to 100.
- `id` (integer, required): Resource identifier.
- `limits` (object): Visit caps; null means no limit.
- `location_targeting` (object): Country/continent targeting.
- `name` (string|null): Template name.
- `schedule` (object): Active-hours scheduling.
- `traffic_quality` (object): Traffic quality controls.
- `traffic_sources` (array): IDs of traffic sources to assign.
- `visit_distribution` (string): How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
- `visit_duration` (object): Visit duration range, in seconds.

### `delete_site_template` (~23 tokens)

Delete a site template

Delete a site template.

Input parameters:

- `id` (integer, required): Resource identifier.

### `list_traffic_sources` (~65 tokens)

List your traffic sources

List your traffic sources. Your own sources plus the shared/built-in ones, referenced by id from a site's `traffic_sources`.

Input parameters:

- `limit` (integer): Page size (clamped to 1..200).
- `offset` (integer): Number of items to skip.

### `get_traffic_source` (~46 tokens)

Get one traffic source

Get one traffic source. Works for your own sources and for the shared defaults (e.g. id 1, "Direct visits").

Input parameters:

- `id` (integer, required): Resource identifier.

### `create_traffic_source` (~92 tokens)

Create a traffic source

Create a traffic source. Exceeding the per-account source cap returns 403 `limit_reached`.

Input parameters:

- `name` (string, required): Name of the traffic source; a default is shown when unset.
- `referer` (string, required): 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.

### `update_traffic_source` (~91 tokens)

Update a traffic source

Update a traffic source. Provide at least one field.

Input parameters:

- `id` (integer, required): 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.

### `delete_traffic_source` (~24 tokens)

Delete a traffic source

Delete a traffic source.

Input parameters:

- `id` (integer, required): Resource identifier.

### `list_proxies` (~51 tokens)

List your proxies

List your proxies. Every proxy on your account, oldest first.

Input parameters:

- `limit` (integer): Page size (clamped to 1..200).
- `offset` (integer): Number of items to skip.

### `get_proxy` (~21 tokens)

Get one proxy

Get one proxy.

Input parameters:

- `id` (integer, required): Resource identifier.

### `create_proxy` (~184 tokens)

Add a proxy

Add 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`.

Input parameters:

- `host` (string, required): The proxy's public IPv4 or IPv6 address. Hostnames and private addresses are rejected; IPv6 is stored in its compressed form.
- `password` (string): Password for an `http` or `https` proxy. Not allowed with `socks5`.
- `port` (integer, required): The proxy's port.
- `type` (string): The proxy protocol, case-insensitive.
- `username` (string): Username for an `http` or `https` proxy. Not allowed with `socks5`.

### `update_proxy` (~101 tokens)

Pause or resume a proxy

Pause 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.

Input parameters:

- `enabled` (boolean, required): False pauses the proxy, true resumes it.
- `id` (integer, required): Resource identifier.

### `delete_proxy` (~21 tokens)

Remove a proxy

Remove a proxy.

Input parameters:

- `id` (integer, required): Resource identifier.

### `list_labels` (~51 tokens)

List your labels

List your labels. Referenced by id from a site's `labels`.

Input parameters:

- `limit` (integer): Page size (clamped to 1..200).
- `offset` (integer): Number of items to skip.

### `get_label` (~21 tokens)

Get one label

Get one label.

Input parameters:

- `id` (integer, required): Resource identifier.

### `create_label` (~56 tokens)

Create a label

Create a label. Exceeding the per-account label cap returns 403 `limit_reached`.

Input parameters:

- `color` (string, required): Label color.
- `description` (string|null): Optional notes.
- `name` (string, required): Label name.

### `update_label` (~55 tokens)

Update a label

Update a label. Provide at least one field.

Input parameters:

- `color` (string): Label color.
- `description` (string|null): Optional notes.
- `id` (integer, required): Resource identifier.
- `name` (string): Label name.

### `delete_label` (~21 tokens)

Delete a label

Delete a label.

Input parameters:

- `id` (integer, required): Resource identifier.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/fr-feelingsurf-feelingsurf/api#diagnostics

## Score history

- 2026-11-05: 91
- 2026-11-04: 91
- 2026-11-03: 90
- 2026-11-02: 90
- 2026-11-01: 89
- 2026-10-31: 89
- 2026-10-30: 88
- 2026-10-29: 88
- 2026-10-28: 87
- 2026-10-27: 87
- 2026-10-26: 86
- 2026-10-25: 86
- 2026-10-24: 86
- 2026-10-23: 85
- 2026-10-22: 85
- 2026-10-21: 84
- 2026-10-20: 84
- 2026-10-19: 83
- 2026-10-18: 83
- 2026-10-17: 82
- 2026-10-16: 82
- 2026-10-15: 81
- 2026-10-14: 81
- 2026-10-13: 80
- 2026-10-12: 80
- 2026-10-10: 79
- 2026-10-08: 78

## Common questions

### What is the FeelingSurf MCP server?

FeelingSurf is an MCP server listed in the public MCP registry as fr.feelingsurf/feelingsurf. Manage your FeelingSurf traffic exchange account: sites, targeting, templates, sources and proxies. This page covers its hosted endpoint (https://api.feelingsurf.fr/mcp).

### Is the FeelingSurf MCP server safe to use?

FeelingSurf scores 91 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the FeelingSurf MCP server expose?

FeelingSurf exposes 34 tools: get_account, update_account, list_surf_sessions, get_referrals, get_traffic_availability, and 29 more. Their descriptions and schemas cost roughly 2,912 tokens of context every time the server is loaded.

### Does the FeelingSurf MCP server require authentication?

Yes. FeelingSurf asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the FeelingSurf MCP server still maintained?

FeelingSurf is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the FeelingSurf MCP server?

VerifyMCP ran 13 checks on FeelingSurf, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://api.feelingsurf.fr/mcp
- Authorisation metadata: https://api.feelingsurf.fr/.well-known/oauth-protected-resource/mcp
- Website: https://www.feelingsurf.fr/mcp
- Changelog RSS feed: https://verifymcp.io/servers/fr-feelingsurf-feelingsurf/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/fr-feelingsurf-feelingsurf/api/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/fr-feelingsurf-feelingsurf/api.json
- HTML version of this page: https://verifymcp.io/servers/fr-feelingsurf-feelingsurf/api
