# ScrapeField

> Google Maps, LinkedIn, Instagram, TikTok and X data as tools. Demo mode needs no key.

- name: com.scrapefield/scrapefield
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 100/100
- quality: 57/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.scrapefield%2Fscrapefield
- tools: https://api.protogrid.dev/v1/servers/com.scrapefield%2Fscrapefield/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "scrapefield": {
      "type": "http",
      "url": "https://scrapefield.com/mcp",
      "headers": {
        "Authorization": "Bearer ${SCRAPEFIELD_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${SCRAPEFIELD_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 100
- drivers: +repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-100% +updated-10d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 57/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 57 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_place (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_place_reviews (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_place_photos (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- warn `tools.token_cost`: about 14,357 tokens to load every tool
- warn `tools.api_dump`: 47 tools, 72% named like REST operations: looks like an API mapped one endpoint per tool

### stability: 25 (weight 15)

- warn `stability.changes`: 20 tool changes in 30 days
- fail `stability.rug_pull`: 1 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 47, about 14,357 tokens to load them all
- tool set hash: 57bb22ba22659521cd0f6c21eab08ff0
- tools last changed: 2026-10-17T15:42:21.281Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.scrapefield/scrapefield.svg)](https://protogrid.dev/servers/com.scrapefield/scrapefield)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-17 `get_x_posts` changed (inputSchema)
- 2026-10-17 `search_linkedin_ads` changed (inputSchema)
- 2026-10-17 `get_linkedin_post_reactions` changed (inputSchema)
- 2026-10-17 `get_linkedin_post_comments` changed (inputSchema)
- 2026-10-17 `get_linkedin_posts` changed (inputSchema)
- 2026-10-12 `search_linkedin_people` changed (description)
  - before: Find people by name, title, company, school or place. With `source=public` (the default), LinkedIn's own people search: it finds people well by name, but hides many other results as "LinkedIn Member", and those are left out. With `source=sales_navigator`, Sales Navigator's lead search: every match, with each person's current roles, at a higher price. 10 a page, or 25 with Sales Navigator. Give at least one of `query`, `first_name`, `last_name`, `title`, `current_company`, `past_company`, `school` or `location`. Use linkedin/profile on a result for the whole profile. Costs 7 credits (170 for `source=sales_navigator`), cached or not; a failed call is refunded.
  - after: Find people by name, title, company, school or place. With `source=public` (the default), LinkedIn's own people search: it finds people well by name, but hides many other results as "LinkedIn Member", and those are left out. With `source=sales_navigator`, Sales Navigator's lead search: every match, with each person's current roles, at a higher price. 10 a page, or 25 with Sales Navigator. A page takes about 3 seconds, or about 5 with Sales Navigator, and now and then up to 25. Give at least one of `query`, `first_name`, `last_name`, `title`, `current_company`, `past_company`, `school` or `location`. Use linkedin/profile on a result for the whole profile. Costs 7 credits (170 for `source=sales_navigator`), cached or not; a failed call is refunded.
- 2026-10-11 `get_x_followers` changed (inputSchema)
- 2026-10-11 `get_x_posts` changed (inputSchema)
- 2026-10-11 `get_x_profile` changed (inputSchema)
- 2026-10-11 `get_tiktok_videos` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/com.scrapefield%2Fscrapefield/changes

## Remotes

- https://scrapefield.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (47)

- `check_sign_up`: `pending` until the person approves; then `approved`, with `api_key`, once. Use the key as `Authorization: Bearer …` on the API and on this server.
- `get_instagram_comments`: Fetch comments on one Instagram post: username, text, timestamp, like_count, reply_count and parent_id for replies. Use this for social listening and campaign verification. Give exactly one of `url` or `shortcode`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_instagram_hashtag`: Fetch recent posts carrying one hashtag, each a full post. Use this for trend and campaign monitoring. Costs 64 credits, cached or not; a failed call is refunded.
- `get_instagram_post`: Fetch one Instagram post or Reel by its URL or shortcode: caption, media, username, timestamp, like_count, comments_count and view_count. Give exactly one of `url` or `shortcode`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_instagram_posts`: Fetch recent posts and Reels by one Instagram account: shortcode, permalink, media_type, caption, timestamp, media_url, carousel children, like_count, comments_count, view_count, hashtags, mentions and the paid-partnership label. Give exactly one of `username` or `url`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_instagram_profile`: Fetch an Instagram account: username, name, biography, bio_links, followers_count, follows_count, media_count, is_verified, is_private, is_business_account, category and the business contact buttons — named as in Instagram's Graph API. Use this for creator discovery and audience sizing. Give exactly one of `username` or `url`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_linkedin_activity`: Fetch what one person did recently on other people's posts: with `type=comments`, the comments they wrote and when; with `type=reactions`, the posts they reacted to and how. Each item carries the post, with its author and counts, when they did it, and for a comment its own `comment_url`, which opens the post at that comment. The newest first, up to 100 a page, with `next_cursor` for older ones. Use this for sales signals: who a prospect engages with, and on what. Give exactly one of `url` or `vanity_name`. Costs 7 credits, cached or not; a failed call is refunded.
- `get_linkedin_ad`: Fetch one ad in full by its id or URL: what linkedin/ads gives, and where it was seen, country by country, with its targeting. Give exactly one of `id` or `url`. Costs 7 credits, cached or not; a failed call is refunded.
- `get_linkedin_company`: Fetch a LinkedIn company page: name, tagline, description, website, industry, company_size, employees_on_linkedin, headquarters, company_type, founded, specialties and follower_count. Use this to enrich a company from its LinkedIn URL. Give exactly one of `url` or `vanity_name`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_linkedin_company_people`: Fetch the people who list a company as their employer, 25 a page from Sales Navigator, which hides no one: each person's name, location and profile, and their current roles, each with its title, employer and `company_id`, and start month. The same object, and price, as linkedin/people with `source=sales_navigator`. Takes the company's numeric id, `company_id` in linkedin/company. Use this to map a company's team or to find who to contact. Costs 170 credits, cached or not; a failed call is refunded.
- `get_linkedin_employee_stats`: Fetch the counts on a company's People tab: where its people live, what they do, where they studied, what they are skilled at, each as a list of names and member counts. Use this to size a team, or to see where a company hires. Give exactly one of `url` or `vanity_name` or `company_id`. Costs 7 credits, cached or not; a failed call is refunded.
- `get_linkedin_group`: Fetch one group: its name, members, description, rules, when it was made and whether its posts are public. Its posts, by `group_url` on linkedin/posts, are not available yet. Give exactly one of `url` or `id`. Costs 7 credits, cached or not; a failed call is refunded.
- `get_linkedin_job`: Fetch one LinkedIn job posting by its id or URL: title, company, location, employment_type, seniority_level, salary where the posting shows one, and the full description — the fields linkedin/jobs leaves null, and workplace_type, listed_at and easy_apply where the posting shows them. Use it on the job_id of a search result. Give exactly one of `id` or `url`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_linkedin_post`: Fetch one post by its URL: its text, images, author, published_at, reaction_count and comment_count. repost_count and the reactions by kind are null: the source gives the total only. Use linkedin/comments for its comments and linkedin/reactions for who reacted. Costs 3 credits, cached or not; a failed call is refunded.
- `get_linkedin_post_comments`: Fetch the comments on one post, up to 100 a page: each comment's text, author (name, headline, profile), published_at, like_count, reply_count and its own `url`, which opens the post at that comment. With `comment_url`, the replies to one comment. Use this to see who engages with a post and what they say. Give exactly one of `url` or `comment_url`. Costs 7 credits, cached or not; a failed call is refunded.
- `get_linkedin_post_reactions`: Fetch who reacted to one post, up to 100 a page: each person's or company page's name, headline and link, and which reaction. With `comment_url`, who reacted to one comment. LinkedIn lists people who react by member id, so `actor.url` is usually a member-id link (`/in/ACoAA…`) with `vanity_name` null; linkedin/profile takes it. Give exactly one of `url` or `comment_url`. Costs 7 credits, cached or not; a failed call is refunded.
- `get_linkedin_posts`: Fetch recent posts by one person or company, or with `query` every public post with those words: text, images, video, document or article, and published_at. A person's posts also carry reaction_count (with the breakdown by kind), comment_count and repost_count; a company's carry the text and the date, with the counts null, at a much lower price. For the counts on one of them, call linkedin/post. Give exactly one of `url` or `company_url` or `query`. Costs 7 credits (3 with `company_url`), cached or not; a failed call is refunded.
- `get_linkedin_profile`: Fetch a LinkedIn profile: full_name, headline, about, location, follower_count, connection_count, current_company, experience, education and skills. With `detail=with_email`, also look for their work email, each address checked with its mail server. Use this to enrich a person from their profile URL. Give exactly one of `url` or `vanity_name`. Costs 11 credits (7 for `detail=main`, 33 for `detail=with_email`), cached or not; a failed call is refunded.
- `get_place`: Fetch one Google Maps listing in full: name, categories, formatted_address, location, rating, user_ratings_total, rating_distribution, price_level, phone numbers, website, opening_hours, the About tab and business_status. popular_times is in the object, and null where the source does not give it. Accepts a Google place_id — from a search, the Places API or anywhere else — or a Google Maps URL. Give exactly one of `place_id` or `url`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_place_photos`: Fetch the photos on one place's listing, as URLs on Google's CDN; we do not rehost images. Dimensions and uploader are in the object, and null where the source does not give them. Give exactly one of `place_id` or `url`. Costs 4 credits, cached or not; a failed call is refunded.
- `get_place_posts`: Fetch the updates the owner posted on one place's listing, newest first: the text, the day, an image and where it links, such as an offer or an event. Use this to watch what a competitor announces. Give exactly one of `place_id` or `url`. Costs 4 credits, cached or not; a failed call is refunded.
- `get_place_reviews`: Fetch Google reviews for one place: rating, text, language, publish_time, the author (with their Local Guide badge and review count), photos and the owner_response where there is one. The first page has up to 8 reviews, and each page after it up to 20. Use this for review monitoring and sentiment work. Give exactly one of `place_id` or `url`. Costs 6 credits, cached or not; a failed call is refunded.
- `get_tiktok_comments`: Fetch comments on one TikTok video: username, text, create_time, like_count, reply_count and parent_comment_id for replies. Give exactly one of `url` or `id`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_tiktok_followers`: Fetch an account's followers, newest first, or with `type=following` the accounts it follows: each a profile with its follower and video counts, about 50 a page. Use this to see who an audience is, or who a creator watches. Give exactly one of `username` or `url`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_tiktok_profile`: Fetch a TikTok account: username, display_name, bio_description, bio_url, is_verified, follower_count, following_count, likes_count and video_count — named as in TikTok's own APIs. Use this for creator discovery and audience sizing. Give exactly one of `username` or `url`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_tiktok_trending`: Fetch the videos TikTok's trending feed shows in one country now, each a full video. One page, which changes from call to call. Use this to see what is spreading. Costs 3 credits, cached or not; a failed call is refunded.
- `get_tiktok_video`: Fetch one TikTok video by URL or id: video_description, username, create_time, duration, the counts, the sound and whether duets and stitches are allowed. Give exactly one of `url` or `id`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_tiktok_videos`: Fetch recent videos by one TikTok account: video_description, create_time, duration, cover_image_url, view_count, like_count, comment_count, share_count, favorites_count, hashtag_names and the sound. Give exactly one of `username` or `url`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_x_community`: Fetch one community: its name, description, member_count, created_at, join_policy, rules and creator. `x/posts` with `community_url` gives its posts. Give exactly one of `url` or `id`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_x_followers`: Fetch an account's followers, about 70 a page, or with `type=following` the accounts it follows: each an account, with its counts and bio. Use this to see who an audience is. Give exactly one of `username` or `url`. Costs 13 credits, cached or not; a failed call is refunded.
- `get_x_post`: Fetch one post by its URL or id: its text, author, created_at, public_metrics with views, media, hashtags and mentions, and the post it replies to or quotes. Give exactly one of `url` or `id`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_x_posts`: Fetch an account's newest posts, about 20 a page with `next_cursor` for older ones; or, with `community_url`, the latest posts in a community, one window. Each post has its text, created_at, public_metrics (likes, reposts, replies, quotes, bookmarks, views), media, hashtags and mentions. Give exactly one of `username` or `url` or `community_url`. Costs 13 credits (3 with `community_url`), cached or not; a failed call is refunded.
- `get_x_profile`: Fetch an X account: username, name, description, location, the link in the profile, verified, created_at, and public_metrics (followers_count, following_count, tweet_count and more) — named as in X's own API v2. Use this to size an account or enrich a handle. Give exactly one of `username` or `url`. Costs 3 credits, cached or not; a failed call is refunded.
- `get_x_replies`: Fetch the replies to one post, about 30 a page: each is a post, with its author, text, likes and replies, and `referenced_tweets` naming the post it answers. Give exactly one of `url` or `id`. Costs 13 credits, cached or not; a failed call is refunded.
- `get_x_retweeters`: Fetch the accounts that reposted one post, about 20 a page, each with its counts and bio. X's API calls this "retweeted by". Give exactly one of `url` or `id`. Costs 13 credits, cached or not; a failed call is refunded.
- `search_instagram_accounts`: Find Instagram accounts by a keyword: each account's username, name and link, the most relevant first, one page. The search answers from a search index, so it gives no counts: call `instagram/profile` with a username for the whole account. Use this to find creators and brands when you do not have a username. Costs 3 credits, cached or not; a failed call is refunded.
- `search_linkedin_ads`: Search the ads LinkedIn shows in its public Ad Library, by advertiser, by words in the ad or by company id, optionally by country and date: each ad's advertiser, format, headline, text, image or video, call to action, where it leads, when it ran, its impressions range and its targeting, about 25 a page. Use this to watch what a competitor advertises. Give exactly one of `advertiser` or `company_id` or `query`. Costs 3 credits, cached or not; a failed call is refunded.
- `search_linkedin_companies`: Find companies by name or keywords, place and size, up to 50 a page. Each result has the company's id, page, industry, place and followers; linkedin/company gives the whole page, and linkedin/employees its people. Costs 7 credits, cached or not; a failed call is refunded.
- `search_linkedin_groups`: Find groups by keywords: each one's name, URL, members and summary, 10 a page. Costs 7 credits, cached or not; a failed call is refunded.
- `search_linkedin_jobs`: Search LinkedIn job postings by keyword and location, with LinkedIn's own filters. Returns each posting's title, company, location, listed_at, URL, and workplace_type and easy_apply where the list shows them. employment_type, seniority_level, salary and description are null: linkedin/job gives them. Costs 3 credits, cached or not; a failed call is refunded.
- `search_linkedin_people`: Find people by name, title, company, school or place. With `source=public` (the default), LinkedIn's own people search: it finds people well by name, but hides many other results as "LinkedIn Member", and those are left out. With `source=sales_navigator`, Sales Navigator's lead search: every match, with each person's current roles, at a higher price. 10 a page, or 25 with Sales Navigator. A page takes about 3 seconds, or about 5 with Sales Navigator, and now and then up to 25. Give at least one of `query`, `first_name`, `last_name`, `title`, `current_company`, `past_company`, `school` or `location`. Use linkedin/profile on a result for the whole profile. Costs 7 credits (170 for `source=sales_navigator`), cached or not; a failed call is refunded.
- `search_linkedin_services`: Find people who list a service on their profile, by what they offer and where: "web design" in "California". LinkedIn hides no one in this search, so it finds people that `linkedin/people` hides. Each result is a person, with their headline and place, 10 a page. Costs 7 credits, cached or not; a failed call is refunded.
- `search_places`: Find businesses and places on Google Maps by a text query, optionally around a point. Each result is the full listing: place_id, name, categories, formatted_address, location, rating and user_ratings_total, phone, website, opening_hours and business_status — named as in Google's Places API. Use this to build a list of businesses in an area; use google-maps/place when you already have a place_id. Costs 3 credits, cached or not; a failed call is refunded.
- `search_tiktok`: Search TikTok by keyword. Returns videos by default; `type=user` returns accounts and `type=hashtag` returns hashtags. Use this for trend research and creator discovery when you do not already have a username. Costs 3 credits (13 for `type=hashtag`), cached or not; a failed call is refunded.
- `search_tiktok_ads`: Search the ads in TikTok's public Ad Library by keyword: each ad's advertiser, title, industry, when it first and last ran, its video or images, the audience range and impressions, about 12 a page. TikTok's library holds ads shown in Europe. Use this to watch what a brand or a category advertises. Costs 3 credits, cached or not; a failed call is refunded.
- `search_x`: Search X as its own search box does, newest first, about 20 a page; X's search operators work inside `query` (`from:nasa`, `since:2026-09-01`, `lang:en`). `type=user` finds accounts instead. Use this to follow a topic, a brand or a campaign. Costs 13 credits, cached or not; a failed call is refunded.
- `sign_up`: Ask for a ScrapeField API key for the person you work for. We email them a link; they sign in and type the code this returns, and only then is a key made. Show them `user_code` and tell them to check their email. Then call check_sign_up with `id` every few seconds until it is approved: the key comes once, in that answer. Keep `id` secret. An account an agent starts has no free credits: they buy a pack. Use this only when your person asked you to set ScrapeField up.
