Four public utilities plus seven OAuth-protected Remote read tools for paired Nymrel devices.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Audit one public website for SEO, schema, and AI discoverability. Returns the score, grade, discoverability status, detected schema types and recommendations supplied by the audit. Results may contain only an aggregate summary; additional per-check evidence may be included. Report robots.txt, sitemap.xml, llms.txt or AI-crawler checks only when their evidence is present in the result; absent checks are unreported, not proven by an aggregate score or PASS. Preserve unmeasured checks and empty recommendations without inventing findings. This is not a ranking guarantee or a security, legal-compliance or crawler-access certification.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http nymrel https://mcp.nymrel.com/mcp
Audit one public website for SEO, schema, and AI discoverability. Returns the score, grade, discoverability status, detected schema types and recommendations supplied by the audit. Results may contain only an aggregate summary; additional per-check evidence may be included. Report robots.txt, sitemap.xml, llms.txt or AI-crawler checks only when their evidence is present in the result; absent checks are unreported, not proven by an aggregate score or PASS. Preserve unmeasured checks and empty recommendations without inventing findings. This is not a ranking guarantee or a security, legal-compliance or crawler-access certification.
| Argument | Type | Description |
|---|---|---|
| url* | string |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string"
}
},
"additionalProperties": false
}Suggest domain names and check each one against public registry records. A name is only reported available when the registry clearly says it is free. When the lookup is inconclusive `availability_checked` is false and `available` is false, so read that as "not confirmed free" rather than "already taken" - some TLDs have no registry service to ask. Confirm at a registrar before buying. `brandability_score` is an opinion about the string, not a claim about how the name will perform; `brandability_factors` reports what it was computed from so you can weigh it yourself.
| Argument | Type | Description |
|---|---|---|
| tlds | any | Up to 6 TLDs, each written with its leading dot - ".com", not "com". The upstream enforces this with a regex and rejects the request otherwise. Defaults to .com, .ai, .app and .dev. |
| keyword_or_concept* | string |
{
"type": "object",
"required": [
"keyword_or_concept"
],
"properties": {
"tlds": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"pattern": "^\\.[a-z]{2,24}$",
"examples": [
".com",
".ai",
".app",
".dev"
]
},
"maxItems": 6
},
{
"type": "null"
}
],
"default": null,
"description": "Up to 6 TLDs, each written with its leading dot - \".com\", not \"com\". The upstream enforces this with a regex and rejects the request otherwise. Defaults to .com, .ai, .app and .dev."
},
"keyword_or_concept": {
"type": "string"
}
},
"additionalProperties": false
}Analyse carry-distance gaps for a structured list of golf clubs. Every club needs a ``name`` and its measured ``carry_distance_yards``; ``loft_degrees`` is optional. Pass 1 to 14 clubs with unique names. The upstream rejects any other key, so send only these three.
| Argument | Type | Description |
|---|---|---|
| clubs* | array |
{
"type": "object",
"required": [
"clubs"
],
"properties": {
"clubs": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"carry_distance_yards"
],
"properties": {
"name": {
"type": "string"
},
"loft_degrees": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null
},
"carry_distance_yards": {
"type": "integer"
}
},
"description": "One club. ``loft_degrees`` is the only optional key the upstream allows.\n\nA pydantic model, not a TypedDict, and not for style: the hosted runtime's\nschema generator degraded ``typing.TypedDict`` to a bare object (proven\nlive 2026-08-17 - the docstring survived, the properties vanished), while\n``BaseModel`` publishes named properties on every pydantic v2 / Python\npairing. ``extra=\"forbid\"`` mirrors the upstream's strict validator, so\nthe published schema and the enforcement are the same contract.",
"additionalProperties": false
}
}
},
"additionalProperties": false
}Use this when the user explicitly wants Nymrel Remote to return metadata for a file or directory. Select the target with the optional device argument.
| Argument | Type | Description |
|---|---|---|
| path* | string | Absolute path or path relative to the configured working directory. |
| device | string | Paired device id or exact device name. Omit only when exactly one eligible device is available. |
{
"type": "object",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"minLength": 1,
"description": "Absolute path or path relative to the configured working directory."
},
"device": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
}
},
"additionalProperties": false
}Retrieve the result of your pending Nymrel Remote read using its callId. If a file inspection returns pending, use this tool instead of submitting that inspection again. It never starts a new device operation. If still pending, wait briefly before checking again.
| Argument | Type | Description |
|---|---|---|
| callId* | string |
{
"type": "object",
"required": [
"callId"
],
"properties": {
"callId": {
"type": "string",
"maxLength": 256,
"minLength": 1
}
},
"additionalProperties": false
}Use this when the user wants to see paired Nymrel Remote devices and current reachability before working with one.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use this when the user explicitly wants Nymrel Remote to list a directory tree with a bounded recursion depth. Select the target with the optional device argument.
| Argument | Type | Description |
|---|---|---|
| path* | string | Absolute path or path relative to the configured working directory. |
| depth | integer | |
| device | string | Paired device id or exact device name. Omit only when exactly one eligible device is available. |
{
"type": "object",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"minLength": 1,
"description": "Absolute path or path relative to the configured working directory."
},
"depth": {
"type": "integer",
"default": 2,
"maximum": 8,
"minimum": 1
},
"device": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
}
},
"additionalProperties": false
}Use this when the user explicitly wants Nymrel Remote to read a UTF-8 text file with optional line pagination. Select the target with the optional device argument.
| Argument | Type | Description |
|---|---|---|
| path* | string | Absolute path or path relative to the configured working directory. |
| device | string | Paired device id or exact device name. Omit only when exactly one eligible device is available. |
| length | integer | |
| offset | integer | 0-based start line; negative values read from the tail. |
{
"type": "object",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"minLength": 1,
"description": "Absolute path or path relative to the configured working directory."
},
"device": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
},
"length": {
"type": "integer",
"default": 1000,
"maximum": 10000,
"minimum": 1
},
"offset": {
"type": "integer",
"default": 0,
"description": "0-based start line; negative values read from the tail."
}
},
"additionalProperties": false
}Use this when the user explicitly wants Nymrel Remote to search UTF-8 file contents below an allowed path. Select the target with the optional device argument.
| Argument | Type | Description |
|---|---|---|
| path* | string | Absolute path or path relative to the configured working directory. |
| device | string | Paired device id or exact device name. Omit only when exactly one eligible device is available. |
| pattern* | string | |
| maxDepth | integer | |
| ignoreCase | boolean | |
| maxResults | integer | |
| filePattern | string | |
| literalSearch | boolean |
{
"type": "object",
"required": [
"path",
"pattern"
],
"properties": {
"path": {
"type": "string",
"minLength": 1,
"description": "Absolute path or path relative to the configured working directory."
},
"device": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
},
"pattern": {
"type": "string",
"maxLength": 2048,
"minLength": 1
},
"maxDepth": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"ignoreCase": {
"type": "boolean",
"default": true
},
"maxResults": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
},
"filePattern": {
"type": "string",
"maxLength": 256
},
"literalSearch": {
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}Use this when the user explicitly wants Nymrel Remote to search file and directory names below an allowed path. Select the target with the optional device argument.
| Argument | Type | Description |
|---|---|---|
| path* | string | Absolute path or path relative to the configured working directory. |
| device | string | Paired device id or exact device name. Omit only when exactly one eligible device is available. |
| pattern* | string | |
| maxDepth | integer | |
| ignoreCase | boolean | |
| maxResults | integer |
{
"type": "object",
"required": [
"path",
"pattern"
],
"properties": {
"path": {
"type": "string",
"minLength": 1,
"description": "Absolute path or path relative to the configured working directory."
},
"device": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
},
"pattern": {
"type": "string",
"maxLength": 512,
"minLength": 1
},
"maxDepth": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"ignoreCase": {
"type": "boolean",
"default": true
},
"maxResults": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
}
},
"additionalProperties": false
}Measure what the opening of a short-video transcript actually does. Returns each measured signal - opening word count, whether it opens on a hook pattern, whether it addresses the viewer, curiosity signals, whether the total word count sits in the platform's range - plus `hook_score`, a 0-100 rollup of exactly those signals, and suggested edits. `target_platform` accepts `tiktok`, `instagram_reels`, `youtube_shorts`, or `x`. The `reels` and `shorts` aliases normalize to their corresponding canonical IDs, which the result echoes. Every figure describes the text the caller supplied. This does not estimate reach, views, retention or virality; those are outcomes in the world that this tool never observes. Read `signals` to see what moved the score.
| Argument | Type | Description |
|---|---|---|
| target_platform | string | |
| transcript_text* | string |
{
"type": "object",
"required": [
"transcript_text"
],
"properties": {
"target_platform": {
"enum": [
"tiktok",
"reels",
"shorts",
"instagram_reels",
"youtube_shorts",
"x"
],
"type": "string",
"default": "tiktok"
},
"transcript_text": {
"type": "string"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 30, 2026.