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_declared→peer_attested→authority_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 MURAsupplier_agent.py- How suppliers join the network
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4881dfd445e22813bf997fd9ca727029cd412fbc58a351df7e4a2d4883cab721
|
|
| MD5 |
80c3d16bc8baa5697fc459bdd4998ea9
|
|
| BLAKE2b-256 |
3f44ef0753c8d0a7438e98ef9ce138075b961fcf5c673a45900de25160c2a38d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afd821ceaa5f234c881b189c64c50bd8054ae5b53a5f4290d1841d601cf0853c
|
|
| MD5 |
d9ca775997f522af1405440a4d8a52b2
|
|
| BLAKE2b-256 |
92b2b4bbd73c6f560acab01b4fcad9fdb4628e5deeebc2402c40ff875e08553c
|