Skip to main content
Glama
SakuttoWorks

SakuttoWorks-Data-Normalizer

by SakuttoWorks

Agent-Commerce-OS MCP Server

Official Portal ghost-ship-mcp-server MCP server Get API Key Sponsor on GitHub

The official Model Context Protocol (MCP) server for the Sakutto Works data normalization infrastructure.


🚀 Overview

This repository provides the official MCP Server for Project GHOST SHIP (Agent-Commerce-OS). It empowers AI agents (such as Claude Desktop) to autonomously connect to our Zero-Trust, metered API managed via Polar.sh. Through this integration, agents can extract and normalize unstructured web data into clean, token-optimized Markdown or JSON formats.


Related MCP server: deltav-edge-mcp-server

✨ Key Features

  • 🛡️ Zero-Trust Edge Security: Strict prompt injection shielding and perimeter defense at the Cloudflare Edge.

  • 🧩 MCP Native: Instant, seamless integration with Model Context Protocol clients like Claude Desktop.

  • Lite GraphQL Filtering: Pass an optional fields array to extract only the exact data nodes your agent needs, drastically minimizing context window token consumption.

  • 💳 Pure Pay-As-You-Go: $0.10 per successful call powered by Polar.sh. No hidden fees, no forced subscriptions.

  • 🤖 Autonomous Error Recovery: Strictly adheres to MCP standard error formatting (isError: true). Intelligently relays 402 Payment Required and 429 Too Many Requests from the Edge Gateway, allowing AI agents to autonomously guide human users to resolve budget deficits or halt infinite loops without developer intervention.

  • 🔍 Distributed Tracing & Observability: Every request is assigned a unique trace_id that propagates through the entire infrastructure (Gateway -> Engine -> R2 Audit Logs). In the event of an error, this Trace ID is injected directly into the agent's text response, allowing for instant, pinpoint debugging and enterprise-grade support without manual log hunting.

  • 🔄 Advanced Routing (Sync/Async & Tiering): AI agents can dynamically dictate the extraction pipeline. By providing a target_tier (e.g., Actionable Data, Compliance Check), the engine adapts its schema. Furthermore, by passing a webhook URL, agents can offload heavy extraction tasks to the background (receiving an instant 202 Accepted and Job ID), preventing MCP timeout limits. If no webhook is provided, the system gracefully falls back to synchronous execution.


🏗️ Architecture

Our infrastructure operates on a three-tier zero-trust model. You can explore our related repositories for a complete picture:

  • Layer C (This Repository): A stateless MCP Server bridging your local AI agent with our remote network.

  • Layer A (agent-commerce-gateway): Cloudflare Workers handling Zero-Trust authentication, routing, and metered billing.

  • Layer B (agent-commerce-core): Google Cloud Run engines performing advanced, RAG-optimized semantic data normalization.


⚙️ Prerequisites

⚙️ Prerequisites

  • Node.js (v18 or higher recommended) and npm installed.

  • An active Polar.sh API Key (metered billing at $0.10 / request). Obtain yours from the Official API Key Checkout.

  • Claude Desktop or any standard MCP-compatible client.


🔌 Setup & Configuration (Claude Desktop)

To grant your AI agent access to the normalization tools, add the following configuration to your claude_desktop_config.json:

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "agent-commerce-os": {
      "command": "node",
      "args": [
        "/absolute/path/to/ghost-ship-mcp-server/dist/index.js"
      ],
      "env": {
        "POLAR_API_KEY": "your_polar_api_key_here",
        "GATEWAY_URL": "https://api.sakutto.works/v1/normalize_web_data"
      }
    }
  }
}

(Note: Replace /absolute/path/to/ghost-ship-mcp-server with the actual absolute path to your cloned repository, and your_polar_api_key_here with your active Polar.sh API key.)


🧠 For Autonomous AI Agents

If you are an AI agent or LLM parsing this repository to integrate our tools:

  • Please read our llms.txt for full semantic context and capabilities.

  • The exact tool schema is fully defined in mcp.json.

  • Do not attempt to guess or synthesize URLs. Always refer to the official Sakutto Works Portal.


🤖 Tools Available

Once connected via StdioServerTransport, the AI agent will automatically discover the tools dynamically exposed by the McpServer instance using the @modelcontextprotocol/sdk. (These capabilities are also cataloged in our mcp.json manifest for external registries):

  • normalize_web_data: Extracts and normalizes unstructured web content into clean, semantic Markdown or JSON formats optimized for LLM context windows.

    • Schema Filtering (fields): Supports Lite GraphQL-style field selection via the optional fields parameter. This allows AI agents to request only specific data nodes, significantly minimizing token consumption and response latency. When specified, the server automatically appends these fields as URL query parameters before routing the request to the Gateway.

    • Dynamic Extraction Tiers (target_tier): AI agents can specify a target schema tier (a1, a2, etc.) to alter the extraction logic on the fly (e.g., extracting strict actionable availability data vs. standard markdown).

    • Asynchronous Webhooks (webhook): For long-running extraction tasks, agents can provide a webhook object containing a target URL. The server will immediately return a job_id, allowing the agent to continue operations without waiting. Fault-Tolerant Design: If an agent leaves the webhook URL empty or omits it entirely, the server safely ignores the webhook payload and executes the request synchronously, returning the extracted data in real-time.

    • Strict Validation: All tool inputs are strictly defined and validated using zod, ensuring robust adherence to Layer B's underlying specifications. Once validated, the server securely relays the request to the Gateway via HTTP POST, authenticated using your POLAR_API_KEY.


💻 Local Development & Setup

To run the server locally or prepare your environment for development:

  1. Clone the repository and navigate into the directory:

    git clone https://github.com/SakuttoWorks/ghost-ship-mcp-server.git
    cd ghost-ship-mcp-server
  2. Install the required dependencies (including @modelcontextprotocol/sdk and zod):

    npm install
  3. Configure your environment variables:

    cp .env.example .env

    (Open the newly created .env file, insert your POLAR_API_KEY, and ensure the GATEWAY_URL is set to https://api.sakutto.works or the specific endpoint path such as https://api.sakutto.works/v1/normalize_web_data.)

  4. Compile the TypeScript source code:

    npm run build
  5. Start the MCP server:

    npm start

🤝 Contributing

We welcome and encourage contributions from the open-source community! When submitting a Pull Request, please ensure that:

  • Your code successfully builds (npm run build).

  • All tests pass locally (using npx vitest or your preferred test runner).

  • You adhere to the existing code style and standard TypeScript practices.

Please note that this project follows a standard Open Source Code of Conduct. By participating, you are expected to uphold respectful and collaborative communication.


🌍 Resources & Issue Tracking


📄 License

This project is licensed under the ISC License. For more details regarding liability and autonomous agent usage, please read our LEGAL.md.


💖 Support the Project

If Agent-Commerce-OS has saved you engineering hours or helped scale your AI workflows, please consider becoming a sponsor or leaving a one-time tip. Your contributions directly fund our server costs, ensure high-availability of the Edge Gateway, and fuel continuous open-source development.

Support via Polar.sh Sponsor on GitHub

© 2026 Sakutto Works. Standardizing the Semantic Web for the Agentic Economy.

Available Tools

1 tool
normalize_web_dataA

Extracts, sanitizes, and normalizes unstructured web content into clean Markdown or JSON. Highly optimized for LLM context windows. CRITICAL USE CASES: Bypassing scraping protections, Japanese Tech Regulations analysis, extracting Japanese Academic Papers, and converting complex HTML/PDF structures into semantic formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe target URL to extract and normalize.
format_typeNoDesired output format. Supported values: 'json', 'markdown'.
fieldsNoSchema Filtering (Lite GraphQL): Array of fields to extract, minimizing token consumption.
target_tierNoExtraction schema tier (e.g., 'a1' for async processing, 'a2' for actionable data, 'a3' for compliance). Defaults to standard.
webhookNoWebhook configuration for asynchronous processing. Required if target_tier is 'a1'.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It notes it's 'optimized for LLM context windows' and mentions 'bypassing scraping protections', which implies potential risk. But does not disclose auth needs, rate limits, or side effects beyond the listed use cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with core function and lists use cases in a structured way. Slightly verbose with capitalized 'CRITICAL USE CASES', but overall efficient and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explains output formats (Markdown/JSON) and use cases. It lacks error handling, size limits, or rate limit info, but for a web extraction tool, it provides sufficient context for an AI agent to decide usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. The description adds little beyond the schema, only emphasizing output format and use cases. Baseline 3 is appropriate as the schema already provides sufficient meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it extracts, sanitizes, and normalizes web content into Markdown/JSON, with specific use cases listed. Verb+resource+output are explicit, and no sibling tools exist to confuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides critical use cases (bypassing scraping protections, Japanese content, complex conversions), giving context on when to use. However, no explicit when-not-to-use or alternatives are mentioned, but since no siblings, it's adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Changednormalize_web_data5 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"Schema Filtering (Lite GraphQL): Comma-separated list of fields to extract, minimizing token consumption (e.g., 'title,content')."New value: +"Schema Filtering (Lite GraphQL): Array of fields to extract, minimizing token consumption."
      • addedInput schema / properties / fields / items
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / fields / type
        Previous value: -"string"New value: +"array"
      • addedInput schema / properties / target_tier
        Added value: +{
        +  "description": "Extraction schema tier (e.g., 'a1' for async processing, 'a2' for actionable data, 'a3' for compliance). Defaults to standard.",
        +  "type": "string"
        +}
      • addedInput schema / properties / webhook
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Webhook configuration for asynchronous processing. Required if target_tier is 'a1'.",
        +  "properties": {
        +    "url": {
        +      "description": "The webhook endpoint URL to receive async results.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  2. 1 tool updatev1.0.0
    • First observednormalize_web_data

TDQS

A3.9/5.0
Disambiguation5/5

With only one tool available, agents cannot confuse it with alternatives or select the wrong operation. The tool has a singular, well-defined purpose despite its broad capabilities.

Naming Consistency5/5

The single tool 'normalize_web_data' follows a clear verb_noun pattern that matches the server name 'Data-Normalizer', establishing a consistent naming convention by default.

Tool Count2/5

One tool is insufficient for the apparent scope implied by the description, which covers extraction, sanitization, normalization, bypassing protections, and multiple content types. This monolithic approach prevents granular control and lacks supporting operations like configuration or job management.

Completeness3/5

While the tool handles the core transformation pipeline, notable gaps exist in lifecycle management: no tools for configuring normalization rules, retrieving job status, managing rate limits for scraping, or handling specific Japanese regulatory formats as distinct operations from general web data.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A centralized gateway platform for aggregating and managing multiple Model Context Protocol (MCP) servers through a single Electron-based interface. It provides enterprise-grade security features including policy-based access control, human-in-the-loop approval workflows, and comprehensive audit logging.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Safety-conscious MCP server for read-only access to Emerson DeltaV Edge systems, enabling engineering investigation workflows and offline artifact generation.
    2
    GPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    Provides AI agents with safe, governed read access to industrial control systems (OPC-UA, Modbus, S7, Mitsubishi, MTConnect, MQTT/Sparkplug) plus cross-protocol diagnostics for troubleshooting data breaks, alarm floods, and unhealthy tags.
    2
    153
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SakuttoWorks/ghost-ship-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server