Nymrel

Four public utilities plus seven OAuth-protected Remote read tools for paired Nymrel devices.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
97%
Integridad del esquema
81%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'nymrel_remote_list_devices' description lacks action verben nymrel_remote_list_devices

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,515Tokens (definiciones de herramientas)
~2.7 KBTamaño de respuesta típico
Impacto significativo en la atención (2.75% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "nymrel": {
      "url": "https://mcp.nymrel.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://mcp.nymrel.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (11)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢nymrel_audit_website(url)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "anyOf": [
    {
      "additionalProperties": true,
      "properties": {
        "score": {
          "maximum": 100,
          "minimum": 0,
          "title": "Score",
          "type": "number"
        },
        "grade": {
          "title": "Grade",
          "type": "string"
        },
        "ai_discoverability_status": {
          "title": "Ai Discoverability Status",
          "type": "string"
        },
        "schema_detected": {
          "items": {
            "type": "string"
          },
          "title": "Schema Detected",
          "type": "array"
        },
        "recommendations": {
          "items": {
            "type": "string"
          },
          "title": "Recommendations",
          "type": "array"
        },
        "full_report_url": {
          "title": "Full Report Url",
          "type": "string"
        }
      },
      "required": [
        "score",
        "grade",
        "ai_discoverability_status",
        "schema_detected",
        "recommendations",
        "full_report_url"
      ],
      "title": "AuditSummary",
      "type": "object"
    },
    {
      "additionalProperties": true,
      "properties": {
        "status": {
          "const": "error",
          "title": "Status",
          "type": "string"
        },
        "error": {
          "additionalProperties": true,
          "properties": {
            "code": {
              "title": "Code",
              "type": "string"
            },
            "message": {
              "title": "Message",
              "type": "string"
            },
            "retryable": {
              "title": "Retryable",
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "title": "ErrorDetail",
          "type": "object"
        }
      },
      "required": [
        "status",
        "error"
      ],
      "title": "ErrorResult",
      "type": "object"
    }
  ]
}
🟢nymrel_golf_bag_gap(clubs)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "clubs": {
      "items": {
        "additionalProperties": false,
        "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.",
        "properties": {
          "name": {
            "type": "string"
          },
          "carry_distance_yards": {
            "type": "integer"
          },
          "loft_degrees": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "name",
          "carry_distance_yards"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "clubs"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "anyOf": [
    {
      "additionalProperties": true,
      "properties": {
        "average_gap_yards": {
          "minimum": 0,
          "title": "Average Gap Yards",
          "type": "number"
        },
        "problem_gaps": {
          "items": {
            "type": "string"
          },
          "title": "Problem Gaps",
          "type": "array"
        },
        "recommendations": {
          "items": {
            "type": "string"
          },
          "title": "Recommendations",
          "type": "array"
        }
      },
      "required": [
        "average_gap_yards",
        "problem_gaps",
        "recommendations"
      ],
      "title": "GolfResult",
      "type": "object"
    },
    {
      "additionalProperties": true,
      "properties": {
        "status": {
          "const": "error",
          "title": "Status",
          "type": "string"
        },
        "error": {
          "additionalProperties": true,
          "properties": {
            "code": {
              "title": "Code",
              "type": "string"
            },
            "message": {
              "title": "Message",
              "type": "string"
            },
            "retryable": {
              "title": "Retryable",
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "title": "ErrorDetail",
          "type": "object"
        }
      },
      "required": [
        "status",
        "error"
      ],
      "title": "ErrorResult",
      "type": "object"
    }
  ]
}
🟢nymrel_find_domain(keyword_or_concept, tlds)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "keyword_or_concept": {
      "type": "string"
    },
    "tlds": {
      "anyOf": [
        {
          "items": {
            "examples": [
              ".com",
              ".ai",
              ".app",
              ".dev"
            ],
            "pattern": "^\\.[a-z]{2,24}$",
            "type": "string"
          },
          "maxItems": 6,
          "type": "array"
        },
        {
          "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."
    }
  },
  "required": [
    "keyword_or_concept"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "anyOf": [
    {
      "additionalProperties": true,
      "properties": {
        "suggestions": {
          "items": {
            "additionalProperties": true,
            "properties": {
              "domain": {
                "title": "Domain",
                "type": "string"
              },
              "available": {
                "title": "Available",
                "type": "boolean"
              },
              "availability_checked": {
                "title": "Availability Checked",
                "type": "boolean"
              },
              "brandability_score": {
                "maximum": 100,
                "minimum": 0,
                "title": "Brandability Score",
                "type": "number"
              },
              "brandability_factors": {
                "additionalProperties": true,
                "properties": {
                  "label_length": {
                    "title": "Label Length",
                    "type": "integer"
                  },
                  "contains_digit": {
                    "title": "Contains Digit",
                    "type": "boolean"
                  },
                  "contains_hyphen": {
                    "title": "Contains Hyphen",
                    "type": "boolean"
                  },
                  "contains_vowel": {
                    "title": "Contains Vowel",
                    "type": "boolean"
                  }
                },
                "required": [
                  "label_length",
                  "contains_digit",
                  "contains_hyphen",
                  "contains_vowel"
                ],
                "title": "BrandabilityFactors",
                "type": "object"
              }
            },
            "required": [
              "domain",
              "available",
              "availability_checked",
              "brandability_score",
              "brandability_factors"
            ],
            "title": "DomainSuggestion",
            "type": "object"
          },
          "title": "Suggestions",
          "type": "array"
        }
      },
      "required": [
        "suggestions"
      ],
      "title": "DomainResult",
      "type": "object"
    },
    {
      "additionalProperties": true,
      "properties": {
        "status": {
          "const": "error",
          "title": "Status",
          "type": "string"
        },
        "error": {
          "additionalProperties": true,
          "properties": {
            "code": {
              "title": "Code",
              "type": "string"
            },
            "message": {
              "title": "Message",
              "type": "string"
            },
            "retryable": {
              "title": "Retryable",
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "title": "ErrorDetail",
          "type": "object"
        }
      },
      "required": [
        "status",
        "error"
      ],
      "title": "ErrorResult",
      "type": "object"
    }
  ]
}
🟢nymrel_social_clip_score(transcript_text, target_platform)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "transcript_text": {
      "type": "string"
    },
    "target_platform": {
      "default": "tiktok",
      "enum": [
        "tiktok",
        "reels",
        "shorts",
        "instagram_reels",
        "youtube_shorts",
        "x"
      ],
      "type": "string"
    }
  },
  "required": [
    "transcript_text"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "anyOf": [
    {
      "additionalProperties": true,
      "properties": {
        "target_platform": {
          "enum": [
            "tiktok",
            "instagram_reels",
            "youtube_shorts",
            "x"
          ],
          "title": "Target Platform",
          "type": "string"
        },
        "hook_score": {
          "maximum": 100,
          "minimum": 0,
          "title": "Hook Score",
          "type": "number"
        },
        "hook_strength": {
          "title": "Hook Strength",
          "type": "string"
        },
        "signals": {
          "additionalProperties": true,
          "properties": {
            "opening_word_count": {
              "minimum": 0,
              "title": "Opening Word Count",
              "type": "integer"
            },
            "opens_with_hook_pattern": {
              "title": "Opens With Hook Pattern",
              "type": "boolean"
            },
            "addresses_viewer": {
              "title": "Addresses Viewer",
              "type": "boolean"
            },
            "has_curiosity_signal": {
              "title": "Has Curiosity Signal",
              "type": "boolean"
            },
            "opening_contains_number": {
              "title": "Opening Contains Number",
              "type": "boolean"
            },
            "total_word_count": {
              "minimum": 0,
              "title": "Total Word Count",
              "type": "integer"
            },
            "platform_word_range": {
              "items": {
                "type": "integer"
              },
              "maxItems": 2,
              "minItems": 2,
              "title": "Platform Word Range",
              "type": "array"
            },
            "total_word_count_in_platform_range": {
              "title": "Total Word Count In Platform Range",
              "type": "boolean"
            }
          },
          "required": [
            "opening_word_count",
            "opens_with_hook_pattern",
            "addresses_viewer",
            "has_curiosity_signal",
            "opening_contains_number",
            "total_word_count",
            "platform_word_range",
            "total_word_count_in_platform_range"
          ],
          "title": "ClipSignals",
          "type": "object"
        },
        "suggested_edits": {
          "items": {
            "type": "string"
          },
          "title": "Suggested Edits",
          "type": "array"
        }
      },
      "required": [
        "target_platform",
        "hook_score",
        "hook_strength",
        "signals",
        "suggested_edits"
      ],
      "title": "ClipResult",
      "type": "object"
    },
    {
      "additionalProperties": true,
      "properties": {
        "status": {
          "const": "error",
          "title": "Status",
          "type": "string"
        },
        "error": {
          "additionalProperties": true,
          "properties": {
            "code": {
              "title": "Code",
              "type": "string"
            },
            "message": {
              "title": "Message",
              "type": "string"
            },
            "retryable": {
              "title": "Retryable",
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "title": "ErrorDetail",
          "type": "object"
        }
      },
      "required": [
        "status",
        "error"
      ],
      "title": "ErrorResult",
      "type": "object"
    }
  ]
}
🟢nymrel_remote_list_devices

Use this when the user wants to see paired Nymrel Remote devices and current reachability before working with one.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢nymrel_remote_read_file(device, path, offset, length)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "device": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
    },
    "path": {
      "type": "string",
      "minLength": 1,
      "description": "Absolute path or path relative to the configured working directory."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "0-based start line; negative values read from the tail."
    },
    "length": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "default": 1000
    }
  },
  "required": [
    "path"
  ],
  "additionalProperties": false
}
🟢nymrel_remote_list_directory(device, path, depth)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "device": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
    },
    "path": {
      "type": "string",
      "minLength": 1,
      "description": "Absolute path or path relative to the configured working directory."
    },
    "depth": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8,
      "default": 2
    }
  },
  "required": [
    "path"
  ],
  "additionalProperties": false
}
🟢nymrel_remote_get_file_info(device, path)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "device": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
    },
    "path": {
      "type": "string",
      "minLength": 1,
      "description": "Absolute path or path relative to the configured working directory."
    }
  },
  "required": [
    "path"
  ],
  "additionalProperties": false
}
🟢nymrel_remote_search_files(device, path, pattern, ignoreCase, maxResults, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "device": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
    },
    "path": {
      "type": "string",
      "minLength": 1,
      "description": "Absolute path or path relative to the configured working directory."
    },
    "pattern": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512
    },
    "ignoreCase": {
      "type": "boolean",
      "default": true
    },
    "maxResults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "default": 100
    },
    "maxDepth": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [
    "path",
    "pattern"
  ],
  "additionalProperties": false
}
🟢nymrel_remote_search_content(device, path, pattern, filePattern, literalSearch, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "device": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Paired device id or exact device name. Omit only when exactly one eligible device is available."
    },
    "path": {
      "type": "string",
      "minLength": 1,
      "description": "Absolute path or path relative to the configured working directory."
    },
    "pattern": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "filePattern": {
      "type": "string",
      "maxLength": 256
    },
    "literalSearch": {
      "type": "boolean",
      "default": true
    },
    "ignoreCase": {
      "type": "boolean",
      "default": true
    },
    "maxResults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "default": 100
    },
    "maxDepth": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [
    "path",
    "pattern"
  ],
  "additionalProperties": false
}
🟢nymrel_remote_get_read_result(callId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "callId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256
    }
  },
  "required": [
    "callId"
  ],
  "additionalProperties": false
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada11 herramientas