macvendors.com MCP — MAC address (OUI) → hardware manufacturer lookup.
Single tool with clear naming ('lookup') and good parameter schema. Description is adequate (194 chars, within baseline 34-392 range) but lacks actionable guidance on when/why to use it. Parameter 'mac' has a detailed description with format examples, meeting the 72-char baseline. However, output schema is undocumented, LLMs cannot plan downstream operations or extract structured fields. Error handling returns free-text messages rather than categorized, actionable guidance. No tool annotations (readOnlyHint, idempotentHint). Composition is sound (single responsibility), but lacks pagination/limits documentation and does not return structured metadata useful for chaining.
macvendors.com = MAC address → hardware manufacturer (OUI) lookup; pass a full MAC or just the first 6 hex digits. Keyless; free tier is rate-limited to ~1 request/second.
Output schema is undocumented. LLMs cannot infer what fields to expect (vendor, error, note, mac) or plan downstream operations. Pattern:tool requires documented return types.
Error responses are free-text strings without categorization (retryable vs user-fixable vs fatal). 'macvendors rate limit' should guide the LLM: 'Rate limited (retryable). Wait 1+ second and retry.' Pattern:recovery-guide.
Tool description lacks actionable context. Does not state WHEN to use it (e.g., 'Use when you need to identify hardware from a MAC address'), WHAT it returns, or prerequisites. Pattern:tool-description.
No tool annotations. Should include readOnlyHint=true (safe to call repeatedly) and idempotentHint=true (same input → same output). Helps agents reason about retry safety.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Parameter description includes example values ('FC:FB:FB:01:02:03', 'FC-FB-FB', 'fcfbfb'). LLMs may reuse these literally. Replace with formal constraints (regex pattern or enum of formats).