Skip to main content

SDK for MURA - Supply Chain Agent Coordination Network

Project description

MURA SDK

SDK for the MURA Supply Chain Agent Coordination Network.

MURA enables AI agents to coordinate across the supply chain - from discovery to procurement to logistics. Built on NANDA concepts from MIT Media Lab.

Installation

pip install mura-sdk

Two Ways to Use MURA

1. For Platforms (Asklio, Comena, etc.)

Use MuraClient to power your procurement with MURA's agent network:

from mura import MuraClient

client = MuraClient(api_key="mura_live_xxx")

# One-liner procurement
result = client.procure(
    request="500 temperature sensors for industrial monitoring",
    budget=5000,
    deadline_days=14,
    destination_region="EU"
)

print(f"Recommended: {result.recommendation.recommended_supplier}")
print(f"Best price: €{result.recommendation.all_options[0].total_cost}")

2. For Suppliers (Mouser, Digi-Key, etc.)

Use SupplierAgent to join the MURA network and receive RFQs:

from mura import SupplierAgent

agent = SupplierAgent(
    name="Acme Electronics",
    capabilities=["electronics", "sensors"],
    region="EU"
)

# Add your products
agent.add_to_catalog("temperature_sensor", unit_price=5.50, category="sensors")
agent.add_to_catalog("esp32_mcu", unit_price=8.00, category="MCUs")

# Join the network
agent.register()
agent.run()  # Start receiving RFQs automatically

Features

MuraClient (for Platforms)

# Full procurement workflow
result = client.procure("Build me a racing drone", budget=1000)

# Stream with real-time updates (for UI)
async for step in client.procure_stream("500 sensors"):
    print(f"{step['agent']}: {step['message']}")

# Discover agents
suppliers = client.registry.discover(
    role=AgentRole.SUPPLIER,
    capability="electronics",
    min_trust=0.8
)

# Get quotes
quote = client.quotes.get_quote(supplier_id, items=[...])

# Check compliance
compliance = client.compliance.check(items=[...], destination_region="EU")

# Plan logistics
logistics = client.logistics.plan(origin="Asia", destination="EU", items=[...])

SupplierAgent (for Suppliers)

# Create agent with certifications
agent = SupplierAgent(
    name="TechParts GmbH",
    capabilities=["electronics", "sensors"],
    region="EU",
    certifications=[
        {"authority": "ISO", "certification": "9001"},
        {"authority": "CE", "certification": "Marked"},
    ]
)

# Load catalog from JSON
agent.load_catalog_from_json("catalog.json")

# Custom RFQ handling
@agent.on_rfq
def handle_rfq(rfq):
    items = []
    for item in rfq.items:
        price = my_erp.get_price(item.part_name)
        items.append(QuoteItem(
            part_name=item.part_name,
            unit_price=price,
            quantity=item.quantity,
            total_price=price * item.quantity,
            lead_time_days=3,
            in_stock=True
        ))
    return Quote(items=items, total_cost=sum(i.total_price for i in items))

NANDA Concepts

MURA implements concepts from MIT Media Lab's NANDA research:

  • AgentFacts: Agent identity cards published to the registry
  • ZTAA Trust Levels: self_declaredpeer_attestedauthority_verified
  • A2A Protocol: Agent-to-agent messaging (RFQs, Quotes)
  • Index: Semantic discovery of agents by capability

Models

from mura import (
    # Agent identity
    AgentFacts,
    TrustProfile,
    TrustLevel,
    Certification,

    # Procurement
    BOMItem,
    Quote,
    QuoteItem,
    RFQ,

    # Results
    ProcurementResult,
    ComplianceResult,
    LogisticsPlan,
    Recommendation,
)

Error Handling

from mura import (
    MuraError,              # Base exception
    MuraConnectionError,    # Network issues
    MuraAuthenticationError,# Invalid API key
    NoSuppliersFoundError,  # No matching suppliers
    ComplianceError,        # Compliance blockers
)

try:
    result = client.procure("dangerous goods")
except ComplianceError as e:
    print(f"Blocked: {e.blockers}")
except NoSuppliersFoundError:
    print("No suppliers available")

Examples

See the examples/ directory:

  • platform_integration.py - How Comena/Asklio integrate MURA
  • supplier_agent.py - How suppliers join the network

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mura_sdk-0.1.1.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mura_sdk-0.1.1-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file mura_sdk-0.1.1.tar.gz.

File metadata

  • Download URL: mura_sdk-0.1.1.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for mura_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b36fe4115a9117dd288f67d106aece62f3af8c6815c1626a8da1d1e1a869d28e
MD5 cf44c11b2f1dde353a6b3a73ec2e8165
BLAKE2b-256 ec1c162ac764939f0303c0c72269d166eb7c0d276ce0928394c26840d0265216

See more details on using hashes here.

File details

Details for the file mura_sdk-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mura_sdk-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for mura_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 417cbe5a308b03d889e678c1e631766c46ff803980af89ad64868432008f2e07
MD5 f77da1e4c17947d25c15c97468be9dc4
BLAKE2b-256 ccf7677c009d82e2cce476dbd130ba06ce794ebfb53a7b2217bc81266fd1df5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page