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.0.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.0-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mura_sdk-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 4881dfd445e22813bf997fd9ca727029cd412fbc58a351df7e4a2d4883cab721
MD5 80c3d16bc8baa5697fc459bdd4998ea9
BLAKE2b-256 3f44ef0753c8d0a7438e98ef9ce138075b961fcf5c673a45900de25160c2a38d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mura_sdk-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 afd821ceaa5f234c881b189c64c50bd8054ae5b53a5f4290d1841d601cf0853c
MD5 d9ca775997f522af1405440a4d8a52b2
BLAKE2b-256 92b2b4bbd73c6f560acab01b4fcad9fdb4628e5deeebc2402c40ff875e08553c

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