Skip to content

chore: change repository license o Blockscout Software Licence - #347

Merged
akolotov merged 2 commits into
mainfrom
chore/license-change
May 15, 2026
Merged

chore: change repository license o Blockscout Software Licence#347
akolotov merged 2 commits into
mainfrom
chore/license-change

Conversation

@akolotov

@akolotov akolotov commented May 15, 2026

Copy link
Copy Markdown
Collaborator

Change repository license from MIT to Blockscout Software Licence; adapt Software definition to Blockscout MCP Server.

Summary by CodeRabbit

  • License

    • Updated project license from MIT to Blockscout Software Licence with commercial use restrictions.
  • Improvements

    • Enhanced Web3 connection pooling and request handling for improved reliability and performance.

Review Change Stack

@akolotov akolotov self-assigned this May 15, 2026
@coderabbitai

coderabbitai Bot commented May 15, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 50307469-69ed-4dda-80f4-54807c2a8ddb

📥 Commits

Reviewing files that changed from the base of the PR and between f66ffc3 and 6dfb240.

📒 Files selected for processing (124)
  • .claude/hooks/allow-temp-dirs.py
  • .claude/hooks/allow-temp-writes.py
  • .claude/hooks/tests/test_allow_temp_dirs.py
  • .claude/hooks/tests/test_allow_temp_writes.py
  • .claude/skills/test-guided-tool-run/scripts/find_test.py
  • .gemini/hooks/restrict_write_access.py
  • .gemini/skills/read-temp-file/scripts/read_temp_file.py
  • LICENSE
  • README.md
  • blockscout_mcp_server/__init__.py
  • blockscout_mcp_server/__main__.py
  • blockscout_mcp_server/analytics.py
  • blockscout_mcp_server/api/__init__.py
  • blockscout_mcp_server/api/dependencies.py
  • blockscout_mcp_server/api/helpers.py
  • blockscout_mcp_server/api/routes.py
  • blockscout_mcp_server/cache.py
  • blockscout_mcp_server/client_meta.py
  • blockscout_mcp_server/config.py
  • blockscout_mcp_server/constants.py
  • blockscout_mcp_server/logging_utils.py
  • blockscout_mcp_server/models.py
  • blockscout_mcp_server/server.py
  • blockscout_mcp_server/telemetry.py
  • blockscout_mcp_server/tools/__init__.py
  • blockscout_mcp_server/tools/address/__init__.py
  • blockscout_mcp_server/tools/address/get_address_info.py
  • blockscout_mcp_server/tools/address/get_tokens_by_address.py
  • blockscout_mcp_server/tools/address/nft_tokens_by_address.py
  • blockscout_mcp_server/tools/block/__init__.py
  • blockscout_mcp_server/tools/block/get_block_info.py
  • blockscout_mcp_server/tools/block/get_block_number.py
  • blockscout_mcp_server/tools/chains/__init__.py
  • blockscout_mcp_server/tools/chains/get_chains_list.py
  • blockscout_mcp_server/tools/common.py
  • blockscout_mcp_server/tools/contract/__init__.py
  • blockscout_mcp_server/tools/contract/_shared.py
  • blockscout_mcp_server/tools/contract/get_contract_abi.py
  • blockscout_mcp_server/tools/contract/inspect_contract_code.py
  • blockscout_mcp_server/tools/contract/read_contract.py
  • blockscout_mcp_server/tools/decorators.py
  • blockscout_mcp_server/tools/direct_api/__init__.py
  • blockscout_mcp_server/tools/direct_api/direct_api_call.py
  • blockscout_mcp_server/tools/direct_api/dispatcher.py
  • blockscout_mcp_server/tools/direct_api/handlers/__init__.py
  • blockscout_mcp_server/tools/direct_api/handlers/address_logs_handler.py
  • blockscout_mcp_server/tools/direct_api/handlers/transaction_logs_handler.py
  • blockscout_mcp_server/tools/direct_api/handlers/transaction_summary_handler.py
  • blockscout_mcp_server/tools/direct_api/handlers/user_operation_handler.py
  • blockscout_mcp_server/tools/ens/__init__.py
  • blockscout_mcp_server/tools/ens/get_address_by_ens_name.py
  • blockscout_mcp_server/tools/initialization/__init__.py
  • blockscout_mcp_server/tools/initialization/unlock_blockchain_analysis.py
  • blockscout_mcp_server/tools/search/__init__.py
  • blockscout_mcp_server/tools/search/lookup_token_by_symbol.py
  • blockscout_mcp_server/tools/transaction/__init__.py
  • blockscout_mcp_server/tools/transaction/_shared.py
  • blockscout_mcp_server/tools/transaction/get_token_transfers_by_address.py
  • blockscout_mcp_server/tools/transaction/get_transaction_info.py
  • blockscout_mcp_server/tools/transaction/get_transactions_by_address.py
  • blockscout_mcp_server/web3_pool.py
  • tests/api/test_routes.py
  • tests/conftest.py
  • tests/integration/__init__.py
  • tests/integration/address/test_get_address_info_real.py
  • tests/integration/address/test_get_tokens_by_address_real.py
  • tests/integration/address/test_nft_tokens_by_address_real.py
  • tests/integration/block/test_get_block_info_real.py
  • tests/integration/block/test_get_block_number_real.py
  • tests/integration/chains/test_get_chains_list_real.py
  • tests/integration/contract/test_get_contract_abi_real.py
  • tests/integration/contract/test_inspect_contract_code_real.py
  • tests/integration/contract/test_read_contract_real.py
  • tests/integration/direct_api/test_address_logs_handler_real.py
  • tests/integration/direct_api/test_direct_api_call_real.py
  • tests/integration/direct_api/test_transaction_logs_handler_real.py
  • tests/integration/direct_api/test_transaction_summary_handler_real.py
  • tests/integration/direct_api/test_user_operation_handler_real.py
  • tests/integration/ens/test_get_address_by_ens_name_real.py
  • tests/integration/helpers.py
  • tests/integration/search/test_lookup_token_by_symbol_real.py
  • tests/integration/test_common_helpers.py
  • tests/integration/transaction/test_get_token_transfers_by_address_real.py
  • tests/integration/transaction/test_get_transaction_info_real.py
  • tests/integration/transaction/test_get_transactions_by_address_real.py
  • tests/test_analytics.py
  • tests/test_analytics_helpers.py
  • tests/test_analytics_source.py
  • tests/test_cache.py
  • tests/test_client_meta.py
  • tests/test_integration_helpers.py
  • tests/test_logging_utils.py
  • tests/test_models.py
  • tests/test_server.py
  • tests/test_telemetry.py
  • tests/test_web3_pool.py
  • tests/tools/address/test_get_address_info.py
  • tests/tools/address/test_get_tokens_by_address.py
  • tests/tools/address/test_nft_tokens_by_address.py
  • tests/tools/address/test_nft_tokens_by_address_pagination.py
  • tests/tools/block/test_get_block_info.py
  • tests/tools/block/test_get_block_number.py
  • tests/tools/chains/test_get_chains_list.py
  • tests/tools/contract/test_fetch_and_process_contract.py
  • tests/tools/contract/test_get_contract_abi.py
  • tests/tools/contract/test_inspect_contract_code.py
  • tests/tools/contract/test_read_contract.py
  • tests/tools/direct_api/handlers/test_address_logs_handler.py
  • tests/tools/direct_api/handlers/test_transaction_logs_handler.py
  • tests/tools/direct_api/handlers/test_transaction_summary_handler.py
  • tests/tools/direct_api/handlers/test_user_operation_handler.py
  • tests/tools/direct_api/test_direct_api_call.py
  • tests/tools/direct_api/test_dispatcher.py
  • tests/tools/ens/test_get_address_by_ens_name.py
  • tests/tools/initialization/test___unlock_blockchain_analysis__.py
  • tests/tools/search/test_lookup_token_by_symbol.py
  • tests/tools/test_common.py
  • tests/tools/test_common_truncate.py
  • tests/tools/test_decorators.py
  • tests/tools/transaction/test_get_token_transfers_by_address.py
  • tests/tools/transaction/test_get_transaction_info.py
  • tests/tools/transaction/test_get_transactions_by_address.py
  • tests/tools/transaction/test_get_transactions_by_address_pagination.py
  • tests/tools/transaction/test_helpers.py

Walkthrough

This pull request migrates from MIT to Blockscout Software License, adds SPDX identifiers throughout the codebase, implements async Web3 connection pooling with custom HTTP provider support, establishes a handler registration system for direct API endpoints, expands transaction logs handling, and adds comprehensive analytics tracking tests with IP extraction and intermediary mapping.

Changes

License Migration & Attribution

Layer / File(s) Summary
License file replacement and README update
LICENSE, README.md
Replaced MIT license with Blockscout Software License including definitions, license grant, commercial/SaaS restrictions, liability disclaimers, termination mechanics, and LCIA arbitration. Updated README license section with corresponding badge.
SPDX headers for source modules
blockscout_mcp_server/*, blockscout_mcp_server/api/*, blockscout_mcp_server/tools/*
Added SPDX license identifiers to all main source modules including package initialization, APIs, utilities, tools, and models.
SPDX headers for hooks, scripts, and tests
.claude/hooks/*, .gemini/hooks/*, tests/**/*
Added SPDX license identifiers to all hook scripts, utility scripts, and test files across API, integration, and unit test directories.

Web3 Connection Pooling & Direct API Handler System

Layer / File(s) Summary
AsyncHTTPProviderBlockscout and Web3Pool
blockscout_mcp_server/web3_pool.py, tests/test_web3_pool.py
Custom async HTTP provider enforcing sequential JSON-RPC IDs and reusing pooled aiohttp sessions. Web3Pool caches AsyncWeb3 instances by chain and headers, manages TCP connector limits, and wires pooled sessions into providers for connection pooling.
Handler auto-discovery and registration
blockscout_mcp_server/tools/direct_api/handlers/__init__.py
Dynamic handler module discovery and auto-import to trigger dispatcher registration via module side effects and ensure all handlers register on package import.
Transaction logs handler implementation
blockscout_mcp_server/tools/direct_api/handlers/transaction_logs_handler.py, tests/integration/direct_api/test_transaction_logs_handler_real.py
Direct API handler for transaction logs endpoint extracting transaction hash, normalizing log items to typed schema, populating truncation notes, paginating via cursor position, and returning structured ToolResponse with metadata.

Analytics Tracking & Testing

Layer / File(s) Summary
Analytics tracking function tests
tests/test_analytics.py
Test suite for track_tool_invocation, track_event, and track_community_usage with fixtures controlling HTTP mode and mocking Mixpanel, covering header-based IP extraction, intermediary header mapping, user-agent fallback, and property propagation.
Analytics helper function tests
tests/test_analytics_helpers.py
Test suite for request IP extraction verifying precedence (x-forwarded-for → X-Real-IP → client.host), case-insensitive header handling, and deterministic distinct ID generation.
Direct API dispatcher routing tests
tests/tools/direct_api/test_dispatcher.py
Test suite verifying handler registration in dispatcher registry, route matching to handlers, response object structure with data attribute, and query parameter forwarding through dispatch flow.
Block number real-network integration tests
tests/integration/block/test_get_block_number_real.py
Integration tests validating get_block_number for latest block resolution and datetime-based block lookup against real network responses with retry error handling.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/license-change

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@akolotov
akolotov merged commit bdff2d0 into main May 15, 2026
6 of 7 checks passed
@akolotov
akolotov deleted the chore/license-change branch May 15, 2026 22:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant