Overview
Content Filter uses the StevenBlack hosts project which aggregates blocklists from multiple reputable sources. Each domain is categorized into one of five categories: ads-malware, fakenews, gambling, porn, or social. The categories field adds The Block List Project's drugs, piracy, crypto, ads, tracking, ransomware, gambling and adult lists. Updated daily.
Live Test URL Safety Grounding Data Source →
The tool
Once your client is connected to the VerveContext server, this appears in its tool list as URLSafetyGroundingData. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "URLSafetyGroundingData",
"arguments": {
"url": "https://example-gambling-site.com/play"
}
}You do not name the tool yourself; the model picks it. Asking about https://example-gambling-site.com/play in the terms this source covers is enough for it to reach for URLSafetyGroundingData on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every source in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervecontext": {
"url": "https://api.vervecontext.com/v1/mcp"
}
}
}https://api.vervecontext.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
urlRequired | string | The URL or domain to check |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"url": "https://www.pornhub.com/video/123",
"domain": "www.pornhub.com",
"isBlocked": true,
"category": "porn",
"matchedDomain": "pornhub.com",
"safetyRating": "unsafe",
"categories": [
"porn"
]
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
url | string | https://www.pornhub.com/video/123 | The full URL that was checked for safety |
domain | string | www.pornhub.com | The extracted domain from the URL checked |
isBlocked | boolean | true | Whether the domain appears on blocklist |
categoryPremium | string | porn | Content category: ads-malware, fakenews, gambling, porn, social |
matchedDomain | string | pornhub.com | The specific blocklisted domain that matched |
safetyRating | string | unsafe | Safety assessment: safe or unsafe |
categoriesPremium | array | ["porn"] | Every category the domain or a parent domain appears in across all lists (ads-malware, fakenews, gambling, porn, social, drugs, piracy, crypto, ads, tracking, ransomware), including ones that do not set isBlocked; null if unavailable |
Why ground on it
A model can produce something that looks like this answer from its training data, and be confidently out of date or simply wrong. This source returns the current value in a shape you can check, which is the difference between an answer you can cite and one you have to hedge.
Point an evaluation at domain: it is the field most worth pinning a claim to, and it is either present and current or absent — never plausibly invented.
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This source is not part of VerveContext. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 2 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Parental Controls
- Block inappropriate content for children including adult sites, gambling, and fake news
- Workplace Filtering
- Keep employees focused by detecting social media and entertainment sites
- Safe Browsing Apps
- Build family-friendly browsers that warn users about unsafe content
- Content Moderation
- Screen user-submitted URLs before allowing them on your platform
Other ways to use URL Safety Grounding Data
Set up URL Safety Grounding Data on VerveContext, or reach the same source a different way. Your VerveContext account and credits work on all of them — one key, one balance.
Related
More in Networking: