Bitcoin Stratigraphy MCP

oficial

Um hub de notário de IA de nível empresarial, protegido por L402, e servidor de dados MCP que fornece telemetria termodinâmica do Bitcoin e ancoragem de estado OpenTimestamps.

O que você pode fazer com Bitcoin Stratigraphy MCP?

  • Descubra dados de estratigrafia indexados — Peça à sua IA para chamar stratigraphy.list para ver datas, alturas, limites e métricas disponíveis.
  • Liste operações de prova — Use proof.list para verificar os esquemas suportados de notarização e verificação antes de fazer chamadas pagas.
  • Solicite lotes de notarização — Peça um desafio proof.notarize com um lote L402 de 100 chamadas e, em seguida, pague via Lightning para ancorar um hash no Bitcoin.
  • Execute clientes sandbox gratuitos — Execute os exemplos Node ou Python sem carteira para testar a conectividade MCP sem assinar ou pagar.
  • Construa um agente LangChain ReAct — Configure um agente somente com ferramentas gratuitas que consulte estratigrafia e metadados de prova usando o adaptador MCP documentado.

Servidor MCP hospedado

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

Instala no Claude Code, Codex, Cursor e outros

Documentação

Bitcoin Stratigraphy MCP — Distribuição para Desenvolvedores

MCP L402 OpenTimestamps LangChain LlamaIndex

Versão: 1.1.0 · Nome no registro MCP: crstrogish/bitcoin-stratigraphy

Um repositório de integração autônomo, com foco remoto, para o mecanismo Bitcoin Stratigraphy MCP: metadados de registro, contratos OpenAPI, clientes sem dependências e exemplos nativos de agentes para frameworks. Não é necessário workspace Replit, carteira, chave de API ou conta de provedor de modelo para o sandbox gratuito.

Escopo e status de segurança

Este pacote conecta-se ao mecanismo hospedado; ele não contém nem afirma executar o servidor completo de liquidação offline. Os códigos-fonte do cliente podem ser executados localmente contra o serviço ao vivo ou um endpoint MCP compatível operado de forma independente. Não há aliases de workspace, credenciais embutidas, chaves de assinatura privadas, estado do operador ou dependência de um repositório pai.

A execução com LangChain é suportada. O código-fonte do LlamaIndex é preservado, mas a instalação de dependências e a execução estão temporariamente indisponíveis: sua dependência NLTK é afetada por GHSA-8mgp-746c-j5xp. O arquivo de requisitos do LlamaIndex intencionalmente não instala nada. Não ignore verificações de segurança nem trate o selo como uma afirmação de execução suportada. Restaure a instalação somente após auditar uma árvore de dependências segura e completa.

Conecte-se ao mecanismo MCP ao vivo

SuperfícieURL
MCP HTTP Streamablehttps://bitcoin-stratigraphy-dashboard.replit.app/mcp
Portal do desenvolvedorhttps://bitcoin-stratigraphy-dashboard.replit.app/docs
OpenAPI ao vivohttps://bitcoin-stratigraphy-dashboard.replit.app/openapi.json

Use a URL MCP em qualquer cliente HTTP Streamable. Importe mcp.json onde seu cliente suportar configuração MCP baseada em URL; alguns hosts exigem um tipo de transporte explícito em seu próprio formato de configuração. smithery.yaml é metadado canônico de registro remoto, não uma receita para iniciar um servidor local.

O servidor anuncia 15 capacidades canônicas. initialize e tools/list são operações gratuitas de descoberta de protocolo. Exatamente duas execuções de ferramentas são gratuitas:

FerramentaArgumentosFinalidade
stratigraphy.list{}Descobrir datas/alturas indexadas, limites e métricas disponíveis
proof.list{}Listar operações de prova suportadas e metadados de esquema

A descoberta de catálogo não é autorização de pagamento. Outras ferramentas canônicas exigem acesso pago; consulte os esquemas ao vivo e os termos de pagamento antes de autorizar compras.

Início rápido no sandbox gratuito — sem carteira

Node.js 22 ou mais recente

A partir da raiz deste repositório, sem instalação de pacotes:

node examples/free-sandbox.mjs

Isso negocia o MCP, envia a notificação de inicialização e então chama apenas stratigraphy.list e proof.list. Não assina, paga, anexa credenciais nem faz solicitações a LLMs. Falha em vez de pagar se uma chamada gratuita retornar HTTP 402.

Para usar seu próprio endpoint compatível:

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

Isso é uma conexão de cliente, não um comando para iniciar o mecanismo de produção.

Python 3.11 ou mais recente

O cliente incluído funciona com a biblioteca padrão; nenhuma instalação de framework é necessária:

python -m examples.free_sandbox

Equivalente em Python para copiar e colar:

from sdk.python.client import BitcoinStratigraphyClient

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

Execute o código a partir da raiz do repositório para que o namespace sdk seja importável. A verificação TLS permanece habilitada. Se sua organização usar uma CA privada, configure seu armazenamento de certificados confiáveis; não desabilite a verificação.

L402: Lotes de Macro-Macaroon com 100 chamadas

Capacidades pagas usam credenciais com escopo de ferramenta. Para solicitar um lote, inclua:

X-L402-Batch-Size: 100

Por exemplo, esta solicitação pede um desafio de lote de notarização; ela não paga uma fatura:

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. Inspecione o HTTP 402, o desafio L402 WWW-Authenticate, o valor da fatura, a expiração e o escopo exato da ferramenta.
  2. Pague somente por meio de uma carteira/cliente Lightning confiável com limites de gastos explícitos. Verifique se a prova de liquidação corresponde ao hash de pagamento desafiado.
  3. Repita a mesma chamada de ferramenta com o cabeçalho do lote e:
Authorization: L402 <macaroon>:<preimage>
X-L402-Batch-Size: 100

A cotação registrada de notarização é de 250 sats/chamada × 100 = 25.000 sats. A fatura ao vivo é autoritativa; exemplos de preço-alvo do registro não são uma garantia de preço. Um passe proof.notarize não desbloqueia outras ferramentas pagas. Orçamentos, expiração, revogação e advertências herdadas ainda se aplicam a cada uso. A atenuação delega ou restringe o escopo; ela não redefine o orçamento pai.

Adaptadores nativos de framework não são carteiras. Forneça uma credencial pré-paga via L402_AUTHORIZATION, ou um proxy de carteira Streamable HTTP de loopback confiável via L402_PROXY_URL com limites de gastos explícitos. Não faça commit de credenciais nem de segredos do provedor de modelo. Os callbacks de pagamento SDK de uma única chamada, mais antigos, não são implementações automáticas de loteamento Macro-Macaroon.

LangChain: loops nativos MCP e ReAct

Use um ambiente Python de consumidor separado, não um ambiente MCP 1.x mais antigo:

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

O modo padrão descobre apenas ferramentas. Para optar por um LLM e notarização paga, configure sua chave de provedor e uma credencial de lote proof.notarize pré-paga por meio do seu gerenciador de segredos e execute:

python cookbooks/langchain_agent.py --run

Loop ReAct somente com ferramentas gratuitas para copiar e colar (chamadas MCP são gratuitas; o uso do modelo é cobrado pelo seu provedor de modelo):

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 o loop ReAct atual modelo → ferramenta → observação. Aliases com sublinhado atendem às regras de nomenclatura do provedor de modelo; os wrappers mantêm os nomes originais com pontos das ferramentas remotas.

LlamaIndex: exemplo de agente nativo preservado

Somente código-fonte até que a suspensão de segurança de dependências seja levantada. O exemplo a seguir para copiar e colar documenta o formato de API suportado para um ambiente auditado no futuro; não é uma instrução para instalar dependências vulneráveis agora. O exemplo completo de notarização paga está em 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())

Credenciais e cobranças de modelo são separadas dos pagamentos MCP.

SDK TypeScript

sdk/typescript contém tanto o cliente REST quanto os códigos-fonte do cliente MCP, configurações de compilador independentes, testes locais e seu próprio manifesto de pacote. A versão 0.1.0 do SDK é independente da versão 1.1.0 do registro.

cd sdk/typescript
npm install
npm test
npm run build

O manifesto raiz do pacote mantém a identidade canônica do registro MCP e a versão da versão, mas substitui scripts/dependências de monorepo por comandos de distribuição portáveis. Não é o manifesto de orquestração do workspace privado.

Conteúdo do repositório e verificações de exportação

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 importações relativas de código-fonte e referências a arquivos Markdown, caminhos de pacotes de scripts e SDK, sintaxe JSON e ausência de aliases de dependência de workspace. Compile o Python e construa o SDK como verificações de sintaxe adicionais. Os testes são offline, a menos que você execute explicitamente um sandbox ou um ponto de entrada de agente.

Limites operacionais

  • Alturas de estratigrafia indexadas são um índice documentado de dados diários, não a ponta ao vivo do Bitcoin nem a proveniência nativa por bloco.
  • A aceitação do calendário OTS não é confirmação do Bitcoin. Preserve o recibo destacado e verifique seu digest correspondente e a atestação Bitcoin separadamente.
  • Assinaturas de ancoragem, provas ZK e recibos OTS estabelecem fatos diferentes; não descreva um como o outro.
  • Os SDKs param em erros de pagamento. Não repita chamadas pagas às cegas nem registre provas de pagamento. Armazene credenciais em um gerenciador de segredos e revise gastos e escopo de ferramentas antes de habilitar um agente.
  • O contrato OpenAPI cobre REST; o tools/list MCP ao vivo descreve esquemas MCP executáveis. A versão do esquema OpenAPI e a versão do SDK não precisam corresponder à versão do registro.
  • Audite dependências opcionais de frameworks antes de instalá-las ou atualizá-las. Nenhuma carteira local, assinatura ou credenciais de liquidação são distribuídas.

Licença

MIT. Consulte LICENSE. Frameworks e dependências opcionais mantêm suas próprias licenças e termos.

🤖 Integração CrewAI

O Bitcoin Stratigraphy Data Engine suporta nativamente o MCPServerAdapter do CrewAI. Insira este trecho em seu fluxo de trabalho para equipar instantaneamente seus agentes com ferramentas termodinâmicas e ancoragem de estado OpenTimestamps:

pip install crewai-tools[mcp]

Consulte crewai_cookbook.py para o script completo de execução do agente.