Bitcoin Stratigraphy MCP

oficial

Un centro de notaría de IA de grado empresarial, con acceso restringido por L402, y un servidor de datos MCP que ofrece telemetría termodinámica de Bitcoin y anclaje de estado de OpenTimestamps.

¿Qué puedes hacer con Bitcoin Stratigraphy MCP?

  • Descubre datos de estratigrafía indexados — Pídele a tu IA que llame a stratigraphy.list para ver fechas, alturas, límites y métricas disponibles.
  • Lista operaciones de prueba — Usa proof.list para verificar los esquemas de notarización y verificación admitidos antes de realizar llamadas de pago.
  • Solicita lotes de notarización — Pide un desafío de proof.notarize con un lote L402 de 100 llamadas y luego paga a través de Lightning para anclar un hash en Bitcoin.
  • Ejecuta clientes sandbox gratuitos — Ejecuta los ejemplos de Node o Python sin billetera para probar la conectividad MCP sin firmar ni pagar.
  • Construye un agente LangChain ReAct — Configura un agente solo con herramientas gratuitas que consulte estratigrafía y metadatos de prueba usando el adaptador MCP documentado.

Servidor MCP alojado

npx add-mcp 'https://bitcoin-stratigraphy-dashboard.replit.app/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Bitcoin Stratigraphy MCP — Distribución para Desarrolladores

MCP L402 OpenTimestamps LangChain LlamaIndex

Versión: 1.1.0 · Nombre en el registro MCP: crstrogish/bitcoin-stratigraphy

Un repositorio de integración independiente y remoto para el motor Bitcoin Stratigraphy MCP: metadatos de registro, contratos OpenAPI, clientes sin dependencias y ejemplos de agentes nativos para frameworks. No se necesita un espacio de trabajo Replit, billetera, clave API ni cuenta de proveedor de modelos para el sandbox gratuito.

Alcance y estado de seguridad

Este paquete se conecta al motor alojado; no contiene ni afirma ejecutar el servidor de liquidación completo fuera de línea. Los códigos fuente del cliente se pueden ejecutar localmente contra el servicio en vivo o un endpoint MCP compatible operado de forma independiente. No hay alias de espacio de trabajo, credenciales incluidas, claves de firma privadas, estado del operador ni dependencia de un repositorio padre.

Se admite la ejecución con LangChain. La fuente de LlamaIndex se conserva, pero la instalación de dependencias y la ejecución no están disponibles temporalmente: su dependencia NLTK se ve afectada por GHSA-8mgp-746c-j5xp. El archivo de requisitos de LlamaIndex intencionalmente no instala nada. No omita las verificaciones de seguridad ni trate la insignia como una afirmación de ejecución compatible. Restaure la instalación solo después de auditar un árbol de dependencias seguro y completo.

Conéctese al motor MCP en vivo

SuperficieURL
MCP HTTP transmisiblehttps://bitcoin-stratigraphy-dashboard.replit.app/mcp
Portal para desarrolladoreshttps://bitcoin-stratigraphy-dashboard.replit.app/docs
OpenAPI en vivohttps://bitcoin-stratigraphy-dashboard.replit.app/openapi.json

Use la URL MCP en cualquier cliente HTTP transmisible. Importe mcp.json donde su cliente admita configuración MCP basada en URL; algunos hosts requieren un tipo de transporte explícito en su propio formato de configuración. smithery.yaml es metadatos de registro remoto canónicos, no una receta para iniciar un servidor local.

El servidor anuncia 15 capacidades canónicas. initialize y tools/list son operaciones gratuitas de descubrimiento de protocolo. Exactamente dos ejecuciones de herramientas son gratuitas:

HerramientaArgumentosPropósito
stratigraphy.list{}Descubrir fechas/alturas indexadas, límites y métricas disponibles
proof.list{}Listar operaciones de prueba compatibles y metadatos de esquema

El descubrimiento de catálogo no es una autorización de pago. Otras herramientas canónicas requieren acceso de pago; consulte los esquemas en vivo y los términos de pago antes de autorizar compras.

Inicio rápido del sandbox gratuito — sin billetera

Node.js 22 o más reciente

Desde la raíz de este repositorio, sin instalación de paquetes:

node examples/free-sandbox.mjs

Esto negocia MCP, envía la notificación de inicialización y luego llama solo a stratigraphy.list y proof.list. No firma, paga, adjunta credenciales ni realiza solicitudes LLM. Falla en lugar de pagar si una llamada gratuita devuelve HTTP 402.

Para usar su propio endpoint compatible:

node examples/free-sandbox.mjs --url http://127.0.0.1:5000/mcp

Esta es una conexión de cliente, no un comando para iniciar el motor de producción.

Python 3.11 o más reciente

El cliente incluido funciona con la biblioteca estándar; no se requiere instalación de framework:

python -m examples.free_sandbox

Equivalente de Python para copiar y pegar:

from sdk.python.client import BitcoinStratigraphyClient

client = BitcoinStratigraphyClient()
print(client.call_tool("stratigraphy.list", {}))
print(client.call_tool("proof.list", {}))

Ejecute el código desde la raíz del repositorio para que el espacio de nombres sdk sea importable. La verificación TLS permanece habilitada. Si su organización usa una CA privada, configure su almacén de certificados de confianza; no deshabilite la verificación.

L402: Lotes de Macro-Macaroon de 100 llamadas

Las capacidades de pago usan credenciales con ámbito de herramienta. Para solicitar un lote, incluya:

X-L402-Batch-Size: 100

Por ejemplo, esta solicitud pide un desafío de lote de notarización; no paga una factura:

curl --include --request POST \
  'https://bitcoin-stratigraphy-dashboard.replit.app/mcp' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json, text/event-stream' \
  --header 'X-L402-Batch-Size: 100' \
  --data '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"proof.notarize","arguments":{"hash":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}}'
  1. Inspeccione HTTP 402, el desafío L402 WWW-Authenticate, el monto de la factura, la expiración y el ámbito exacto de la herramienta.
  2. Pague solo a través de una billetera/cliente Lightning de confianza con límites de gasto explícitos. Verifique que la prueba de liquidación coincida con el hash de pago desafiado.
  3. Reintente la misma llamada de herramienta con el encabezado del lote y:
Authorization: L402 <macaroon>:<preimage>
X-L402-Batch-Size: 100

La cotización de notarización registrada es de 250 sats/llamada × 100 = 25,000 sats. La factura en vivo es autoritativa; los ejemplos de precios objetivo del registro no son una garantía de precio. Un pase proof.notarize no desbloquea otras herramientas de pago. Los presupuestos, la expiración, la revocación y las cláusulas heredadas aún se aplican en cada uso. La atenuación delega o reduce el ámbito; no restablece el presupuesto principal.

Los adaptadores nativos de framework no son billeteras. Proporcione una credencial prepagada a través de L402_AUTHORIZATION, o un proxy de billetera HTTP transmisible de bucle local de confianza a través de L402_PROXY_URL con límites de gasto explícitos. No confirme credenciales ni secretos del proveedor de modelos. Las devoluciones de llamada de pago SDK de una sola vez más antiguas no son implementaciones automáticas de lotes Macro-Macaroon.

LangChain: bucles nativos MCP y ReAct

Use un entorno Python de consumidor separado, no un entorno MCP 1.x más antiguo:

python -m pip install -r cookbooks/requirements-langchain.txt
python cookbooks/langchain_agent.py

El modo predeterminado solo descubre herramientas. Para optar por un LLM y notarización de pago, configure su clave de proveedor y una credencial de lote proof.notarize prepagada a través de su administrador de secretos, luego ejecute:

python cookbooks/langchain_agent.py --run

Bucle ReAct solo con herramientas gratuitas para copiar y pegar (las llamadas MCP son gratuitas; el uso del modelo se factura a su proveedor de modelos):

import asyncio
from fastmcp.client import Client
from fastmcp.client.transports import StreamableHttpTransport
from langchain.mcp import MCPAdapter
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI

async def main():
    transport = StreamableHttpTransport(
        url="https://bitcoin-stratigraphy-dashboard.replit.app/mcp"
    )
    client = Client(transport, mode="legacy", timeout=30)
    async with MCPAdapter(client) as adapter:
        tools = await adapter.list_tools()
        free = [
            t.model_copy(update={"name": t.name.replace(".", "_")})
            for t in tools if t.name in {"stratigraphy.list", "proof.list"}
        ]
        if len(free) != 2:
            raise RuntimeError("Expected both free sandbox capabilities")
        agent = create_agent(
            model=ChatOpenAI(model="gpt-4.1-mini", temperature=0),
            tools=free,
            system_prompt="Use only these discovery tools. Report actual results.",
        )
        result = await agent.ainvoke(
            {"messages": [{"role": "user", "content":
                "List indexed stratigraphy bounds and supported proof operations."}]}
        )
        print(result["messages"][-1].content)

asyncio.run(main())

create_agent implementa el bucle ReAct actual modelo → herramienta → observación. Los alias con guion bajo cumplen las reglas de nomenclatura del proveedor de modelos; los envoltorios conservan los nombres remotos de herramientas con puntos originales.

LlamaIndex: ejemplo de agente nativo conservado

Solo fuente hasta que se levante la suspensión de seguridad de dependencias. El siguiente ejemplo para copiar y pegar documenta la forma de API compatible para un futuro entorno auditado; no es una instrucción para instalar dependencias vulnerables ahora. El ejemplo completo de notarización de pago está en cookbooks/llamaindex_agent.py.

import asyncio
from llama_index.tools.mcp import BasicMCPClient, McpToolSpec
from llama_index.core.agent.workflow import ReActAgent
from llama_index.llms.openai import OpenAI

async def main():
    client = BasicMCPClient(
        "https://bitcoin-stratigraphy-dashboard.replit.app/mcp", timeout=30
    )
    try:
        tools = await McpToolSpec(client=client).to_tool_list_async()
        free = [t for t in tools if t.metadata.name in
                {"stratigraphy.list", "proof.list"}]
        if len(free) != 2:
            raise RuntimeError("Expected both free sandbox capabilities")
        for tool in free:
            tool.metadata.name = tool.metadata.name.replace(".", "_")
        agent = ReActAgent(
            tools=free,
            llm=OpenAI(model="gpt-4.1-mini", temperature=0),
            system_prompt="Use only the discovery tools. Report actual results.",
            timeout=90,
        )
        response = await agent.run(
            user_msg="List indexed stratigraphy bounds and supported proof operations."
        )
        print(str(response))
    finally:
        await client.http_client.aclose()

asyncio.run(main())

Las credenciales y cargos del modelo son separados de los pagos MCP.

SDK de TypeScript

sdk/typescript contiene tanto el cliente REST como las fuentes del cliente MCP, configuraciones de compilador independientes, pruebas locales y su propio manifiesto de paquete. La versión 0.1.0 del SDK es independiente de la versión 1.1.0 del registro.

cd sdk/typescript
npm install
npm test
npm run build

El manifiesto raíz del paquete conserva la identidad canónica del registro MCP y la versión de lanzamiento, pero reemplaza los scripts/dependencias del monorepo con comandos de distribución portátiles. No es el manifiesto de orquestación del espacio de trabajo privado.

Contenido del repositorio y verificaciones de exportación

README.md                 Distribution and operational guide
package.json              Portable MCP metadata and sandbox/test commands
smithery.yaml             Canonical remote registration manifest
mcp.json                  Remote MCP client configuration
openapi.yaml              Canonical self-contained REST/OpenAPI contract
openapi.json              JSON rendering of the same canonical contract
LICENSE                   MIT license
cookbooks/                Native framework sources, requirements, and offline tests
sdk/typescript/           TypeScript REST/MCP clients and standalone package
sdk/python/               Python REST/MCP clients and offline tests
examples/                 Wallet-free Node/Python sandbox entrypoints
test/                     Node sandbox transport and safety tests
scripts/verify-export.mjs  Portable structure, import, and reference checks
npm run verify
npm test
python -m unittest discover -s cookbooks -p 'test_*.py'
python -m unittest discover -s sdk/python -p 'test_*.py'

verify verifica las importaciones de fuente relativas y las referencias de archivos Markdown, las rutas de paquetes de scripts y SDK, la sintaxis JSON y la ausencia de alias de dependencia del espacio de trabajo. Compile Python y construya el SDK como verificaciones de sintaxis adicionales. Las pruebas están fuera de línea a menos que ejecute explícitamente un sandbox o un punto de entrada de agente.

Límites operativos

  • Las alturas de estratigrafía indexadas son un índice de datos diarios documentado, no la punta de Bitcoin en vivo ni la procedencia nativa por bloque.
  • La aceptación del calendario OTS no es confirmación de Bitcoin. Conserve el recibo separado y verifique su digesto coincidente y la atestación de Bitcoin por separado.
  • Las firmas de anclaje, las pruebas ZK y los recibos OTS establecen hechos diferentes; no describa uno como otro.
  • Los SDK se detienen en errores de pago. No reintente llamadas de pago a ciegas ni registre pruebas de pago. Almacene las credenciales en un administrador de secretos y revise el gasto y el ámbito de la herramienta antes de habilitar un agente.
  • El contrato OpenAPI cubre REST; el tools/list MCP en vivo describe esquemas MCP ejecutables. La versión del esquema OpenAPI y la versión del SDK no necesitan coincidir con el lanzamiento del registro.
  • Audite las dependencias opcionales del framework antes de instalarlas o actualizarlas. No se envían billeteras locales, firmas ni credenciales de liquidación.

Licencia

MIT. Consulte LICENSE. Los frameworks y dependencias opcionales conservan sus propias licencias y términos.

🤖 Integración con CrewAI

El motor de datos Bitcoin Stratigraphy admite nativamente el MCPServerAdapter de CrewAI. Inserte este fragmento en su flujo de trabajo para equipar instantáneamente a sus agentes con herramientas termodinámicas y anclaje de estado OpenTimestamps:

pip install crewai-tools[mcp]

Consulte crewai_cookbook.py para ver el script completo de ejecución del agente.