MCP server for the FiberOne (eservice.fob.ng) subscriber API
FiberOne MCP has 22 well-named tools with consistent verb_noun patterns (get_*, create_*). All tools have descriptions (avg ~100 chars, within baseline 34-392). Input schemas are present and use Zod with type constraints (min/max for pagination). However, output schemas are NOT documented, responses are JSON-stringified without field documentation, forcing LLMs to parse unstructured text. Error handling is minimal: login/logout catch FiberOneError but most tools lack recovery guidance. Tool annotations (readOnlyHint) are correctly applied to 20 read-only tools. Parameter descriptions are adequate but lack format hints (e.g., 'email' for username param in login). No batch operations or idempotency guarantees documented.
Create a new support ticket. This is an action tool: it files a real report with FiberOne.
Get the logged-in subscriber's account details.
Get auto-renew status: agreed, saved card, opt-out state.
Get dashboard overview stats for the current subscriber.
List FiberOne physical experience centres (address, city).
List FiberOne FAQs.
Output schemas not documented. All tools return JSON.stringify(data) without field documentation. LLMs cannot plan downstream calls or extract specific fields, they must parse unstructured text.
Error handling lacks recovery guidance. login() catches FiberOneError but most tools have no try-catch. Errors are not categorized as retryable/user-fixable/fatal, and no actionable messages guide the LLM on next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
List lost days (downtime compensation credits) for the account.
Get modem/router devices on the account.
List outage tickets for the account.
List past account pauses.
Check account pause eligibility: days paused, days left this year, pause reasons.
List pay-for-me requests (someone else paying for this account).
List available plans/packages.
Get the plan details used for renewal (price, validity, speed).
Get one support ticket with its message thread.
List support ticket categories and priorities.
List payment transactions (most recent first).
List plans the account can upgrade to.
Get data usage for the subscriber.
Get historical data usage (daily download/upload series).
Log in to the FiberOne API. Uses FIBERONE_USERNAME/FIBERONE_PASSWORD env by default; pass explicit credentials to override.
End the session on the FiberOne API and clear the cached token.
Parameter descriptions lack format hints. 'username' in login() should specify 'email format' or 'FiberOne account email'. 'category' in create_outage_ticket should reference get_ticket_categories output. Missing dependency hints force extra discovery calls.
No confirmation or dry-run for destructive operations. create_outage_ticket modifies state (files a real support ticket) but has no confirmation step. Agents can accidentally file duplicate tickets.
Credentials exposed via environment variables without validation. login() accepts optional username/password params but relies on FIBERONE_USERNAME/FIBERONE_PASSWORD env vars. No documentation on secure credential handling or token lifecycle.