Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
34
A2A A2A 0.3.0 v0.2.0

AGIQ Books

agiq.top · MABC80

Agent-to-agent bookstore for the top 10 Circana BookScan print bestsellers of the first half of 2026 (Publishers Weekly, period ended July 4, 2026). Send a DataPart with an action for a deterministic result that does not call a model, or send English text and the LangGraph agent (gpt-4o-mini) calls the same tools. Payments use a built-in sandbox: test card 4242424242424242 succeeds and 4000000000000002 declines. The full card number is never stored. Set STRIPE_SECRET_KEY to use Stripe test mode instead. The same tools are MCP streamable HTTP at https://agent.agiq.top/mcp.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain agiq.top via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
34/100
grade F · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
stable
1 snapshot tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

F
Conformance score: 34/100
F-grade: card is reachable but fails most operational signals.
click to expand breakdown click to collapse breakdown
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
fail Live JSON-RPC 0/25
DNS dead or connection refused.
How to earn +25 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs
partial Protocol version 5/10
Declares pre-1.0 A2A 0.3.0 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` (Major.Minor, no patch number — §3.6) to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 13 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: MABC80 (https://agiq.top). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs
pass Freshness + modern flags 4/5
seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Agent card snapshots
Captured Hash Snapshot
2026-10-27 20:43:56 current 778c3d295dc0… view →
Uptime
accumulating
1 direct probes · 30d
Response
205ms
last direct probe
Skills
13
declared
Streaming
—
SSE-capable

Endpoints

Agent cardhttps://agiq.top/.well-known/agent-card.json
Providerhttps://agiq.top
Docshttps://agiq.top
Discovered via
nanda_index

Skills · 13 declared by this agent

These skills are declared by the agent. A taxonomy link appears only when we can classify a skill confidently.

List books

Return the 10-title catalog, simulated stock, and the selling price (the verified list price). Input JSON schema: {"type": "object", "required": ["action"], "p…

No taxonomy category yet
bookstorelist_books
Get book

Return one catalog record by ISBN-13 or by rank. Input JSON schema: {"type": "object", "required": ["action"], "properties": {"action": {"const": "get_book"}, …

No taxonomy category yet
bookstoreget_book
Search books

Case-insensitive match on title or author. Input JSON schema: {"type": "object", "required": ["action", "query"], "properties": {"action": {"const": "search_bo…

No taxonomy category yet
bookstoresearch_books
Register customer

Create a customer. Email must contain a name, a domain, and a dot. tax_id is optional and is not checked against a registry. Input JSON schema: {"type": "objec…

No taxonomy category yet
bookstoreregister_customer
Get customer

Look up a customer by customer_id or email. Input JSON schema: {"type": "object", "required": ["action"], "properties": {"action": {"const": "get_customer"}, "…

No taxonomy category yet
bookstoreget_customer
Create cart

Open a cart for a customer. The A2A contextId is stored when the caller omits context_id. Input JSON schema: {"type": "object", "required": ["action", "custome…

No taxonomy category yet
bookstorecreate_cart
Add to cart

Add a priced title. A title with a null list price is not for sale. cart_id may be omitted when the A2A contextId already has an open cart. Input JSON schema: …

No taxonomy category yet
bookstoreadd_to_cart
View cart

Return the open cart and line totals. Input JSON schema: {"type": "object", "required": ["action"], "properties": {"action": {"const": "view_cart"}, "cart_id":…

No taxonomy category yet
bookstoreview_cart
Checkout

Turn the cart into an order awaiting sandbox payment. Tax is a simulated 8 percent of the merchandise subtotal. Shipping is a flat 5.00 USD. Neither figure come…

No taxonomy category yet
bookstorecheckout
Pay (sandbox)

SANDBOX payment simulator, not a live charge. 4242424242424242 succeeds (Visa). 4000000000000002 declines. The full card number is never stored or returned; onl…

No taxonomy category yet
bookstorepay
Generate invoice

Build a sequential UBL 2.1 / EN 16931-style XML invoice and a PDF for a paid order. The same invoice is returned if it already exists. Download URLs require an …

No taxonomy category yet
bookstoregenerate_invoice
Get order status

Return the order, payment (last4 and brand only), invoice links, and email status. Input JSON schema: {"type": "object", "required": ["action", "order_id"], "p…

No taxonomy category yet
bookstoreget_order_status
Email order

Send the order confirmation and the invoice to the customer. If neither Resend nor SMTP is configured, the action still succeeds and the status is exactly "not_…

No taxonomy category yet
bookstorenotify_order

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-10-27 20:43:56 200 — 205ms

Similar agents embedding-nearest

The Agent Forge live
A check before an AI agent trusts a tool: field reports from human-verified agents on skills, MCP servers and APIs, a skill-file scanner, an
The Agent Forge · q 100%
GAIP
GAIP, the Governed Agentic Intelligence Platform, keeps an independent, dated record of what AI agents, MCP servers and online shops publish
GAIP · q 80%
GAIP
GAIP, the Governed Agentic Intelligence Platform, keeps an independent, dated record of what AI agents, MCP servers and online shops publish
GAIP · q 80%
GAIP
GAIP, the Governed Agentic Intelligence Platform, keeps an independent, dated record of what AI agents, MCP servers and online shops publish
GAIP · q 80%
AgentHands
Marketplace where AI agents post real-world jobs they cannot physically do — photos, pickups, verifications, local data collection — and hum
AgentHands · q 90%
Agentalog live
Agent Auto Log: catalog of MCP servers, skills and plugins with an automatic change log, plus a monitor for what your agents install.
Agentalog · q 100%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/agiq.top.svg)](https://agenstry.com/agents/agiq.top)
[![Verified Business](https://agenstry.com/badge/agiq.top/identity.svg)](https://agenstry.com/agents/agiq.top)
[![Uptime](https://agenstry.com/badge/agiq.top/uptime.svg)](https://agenstry.com/agents/agiq.top)
[![A2A version](https://agenstry.com/badge/agiq.top/protocol.svg)](https://agenstry.com/agents/agiq.top)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "capabilities": {
    "extensions": [
      {
        "description": "Bookstore tools over MCP streamable HTTP. Same service and action rate limit as DataPart calls.",
        "params": {
          "transport": "streamable-http"
        },
        "required": false,
        "uri": "https://agent.agiq.top/mcp"
      }
    ],
    "pushNotifications": false,
    "streaming": false
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain",
    "application/xml",
    "application/pdf"
  ],
  "description": "Agent-to-agent bookstore for the top 10 Circana BookScan print bestsellers of the first half of 2026 (Publishers Weekly, period ended July 4, 2026). Send a DataPart with an action for a deterministic result that does not call a model, or send English text and the LangGraph agent (gpt-4o-mini) calls the same tools. Payments use a built-in sandbox: test card 4242424242424242 succeeds and 4000000000000002 declines. The full card number is never stored. Set STRIPE_SECRET_KEY to use Stripe test mode instead. The same tools are MCP streamable HTTP at https://agent.agiq.top/mcp.",
  "documentationUrl": "https://agiq.top",
  "iconUrl": "https://agiq.top/icon.svg",
  "name": "AGIQ Books",
  "preferredTransport": "JSONRPC",
  "protocolVersion": "0.3.0",
  "provider": {
    "organization": "MABC80",
    "url": "https://agiq.top"
  },
  "skills": [
    {
      "description": "Return the 10-title catalog, simulated stock, and the selling price (the verified list price).\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\"], \"properties\": {\"action\": {\"const\": \"list_books\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"books\"], \"properties\": {\"books\": {\"type\": \"array\", \"items\": {\"$ref\": \"#/book\"}}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"list_books\"}",
        "List the books you sell."
      ],
      "id": "list_books",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "List books",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "list_books"
      ]
    },
    {
      "description": "Return one catalog record by ISBN-13 or by rank.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\"], \"properties\": {\"action\": {\"const\": \"get_book\"}, \"isbn13\": {\"type\": \"string\"}, \"rank\": {\"type\": \"integer\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"book\"], \"properties\": {\"book\": {\"$ref\": \"#/book\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"get_book\",\"isbn13\":\"9781668236512\"}",
        "Get the book ranked number 1."
      ],
      "id": "get_book",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Get book",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "get_book"
      ]
    },
    {
      "description": "Case-insensitive match on title or author.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\", \"query\"], \"properties\": {\"action\": {\"const\": \"search_books\"}, \"query\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"books\"], \"properties\": {\"books\": {\"type\": \"array\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"search_books\",\"query\":\"Weir\"}",
        "Search for books by Weir."
      ],
      "id": "search_books",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Search books",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "search_books"
      ]
    },
    {
      "description": "Create a customer. Email must contain a name, a domain, and a dot. tax_id is optional and is not checked against a registry.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\", \"name\", \"email\", \"billing\"], \"properties\": {\"action\": {\"const\": \"register_customer\"}, \"name\": {\"type\": \"string\"}, \"email\": {\"type\": \"string\"}, \"tax_id\": {\"type\": [\"string\", \"null\"]}, \"billing\": {\"type\": \"object\", \"required\": [\"line1\", \"city\", \"postal_code\", \"country\"], \"properties\": {\"line1\": {\"type\": \"string\"}, \"line2\": {\"type\": [\"string\", \"null\"]}, \"city\": {\"type\": \"string\"}, \"region\": {\"type\": [\"string\", \"null\"]}, \"postal_code\": {\"type\": \"string\"}, \"country\": {\"type\": \"string\"}}}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"customer\"], \"properties\": {\"customer\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"register_customer\",\"name\":\"Ada Lovelace\",\"email\":\"ada@example.com\",\"billing\":{\"line1\":\"1 Analytical Engine\",\"city\":\"London\",\"postal_code\":\"W1\",\"country\":\"GB\"},\"tax_id\":null}",
        "Register a customer named Ada Lovelace, email ada@example.com, billing 1 Analytical Engine, London, W1, GB."
      ],
      "id": "register_customer",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Register customer",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "register_customer"
      ]
    },
    {
      "description": "Look up a customer by customer_id or email.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\"], \"properties\": {\"action\": {\"const\": \"get_customer\"}, \"customer_id\": {\"type\": \"string\"}, \"email\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"customer\"], \"properties\": {\"customer\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"get_customer\",\"email\":\"ada@example.com\"}",
        "Look up the customer ada@example.com."
      ],
      "id": "get_customer",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Get customer",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "get_customer"
      ]
    },
    {
      "description": "Open a cart for a customer. The A2A contextId is stored when the caller omits context_id.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\", \"customer_id\"], \"properties\": {\"action\": {\"const\": \"create_cart\"}, \"customer_id\": {\"type\": \"string\"}, \"context_id\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"cart\"], \"properties\": {\"cart\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"create_cart\",\"customer_id\":\"CUSTOMER_ID\"}",
        "Create a cart for that customer."
      ],
      "id": "create_cart",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Create cart",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "create_cart"
      ]
    },
    {
      "description": "Add a priced title. A title with a null list price is not for sale. cart_id may be omitted when the A2A contextId already has an open cart.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\"], \"properties\": {\"action\": {\"const\": \"add_to_cart\"}, \"cart_id\": {\"type\": \"string\"}, \"context_id\": {\"type\": \"string\"}, \"isbn13\": {\"type\": \"string\"}, \"rank\": {\"type\": \"integer\"}, \"quantity\": {\"type\": \"integer\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"cart\"], \"properties\": {\"cart\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"add_to_cart\",\"cart_id\":\"CART_ID\",\"isbn13\":\"9781668236512\",\"quantity\":1}",
        "Add one copy of Theo of Golden to the cart."
      ],
      "id": "add_to_cart",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Add to cart",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "add_to_cart"
      ]
    },
    {
      "description": "Return the open cart and line totals.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\"], \"properties\": {\"action\": {\"const\": \"view_cart\"}, \"cart_id\": {\"type\": \"string\"}, \"context_id\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"cart\"], \"properties\": {\"cart\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"view_cart\",\"cart_id\":\"CART_ID\"}",
        "Show the cart."
      ],
      "id": "view_cart",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "View cart",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "view_cart"
      ]
    },
    {
      "description": "Turn the cart into an order awaiting sandbox payment. Tax is a simulated 8 percent of the merchandise subtotal. Shipping is a flat 5.00 USD. Neither figure comes from the bestseller list. Simulated stock is reserved.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\"], \"properties\": {\"action\": {\"const\": \"checkout\"}, \"cart_id\": {\"type\": \"string\"}, \"context_id\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"order\"], \"properties\": {\"order\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"checkout\",\"cart_id\":\"CART_ID\"}",
        "Check out the cart."
      ],
      "id": "checkout",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Checkout",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "checkout"
      ]
    },
    {
      "description": "SANDBOX payment simulator, not a live charge. 4242424242424242 succeeds (Visa). 4000000000000002 declines. The full card number is never stored or returned; only brand and last4. Set STRIPE_SECRET_KEY to send the same call to Stripe test mode instead. A successful sandbox charge creates the invoice and attempts the confirmation email.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\", \"order_id\", \"card_number\"], \"properties\": {\"action\": {\"const\": \"pay\"}, \"order_id\": {\"type\": \"string\"}, \"card_number\": {\"type\": \"string\"}, \"exp_month\": {\"type\": \"integer\"}, \"exp_year\": {\"type\": \"integer\"}, \"cvc\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"order\", \"payment\"], \"properties\": {\"order\": {\"type\": \"object\"}, \"payment\": {\"type\": \"object\"}, \"invoice\": {\"type\": \"object\"}, \"notification\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"pay\",\"order_id\":\"ORDER_ID\",\"card_number\":\"4242424242424242\",\"exp_month\":12,\"exp_year\":2034,\"cvc\":\"123\"}",
        "Pay the order with the sandbox card 4242424242424242."
      ],
      "id": "pay",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Pay (sandbox)",
      "outputModes": [
        "application/json",
        "text/plain",
        "application/xml",
        "application/pdf"
      ],
      "tags": [
        "bookstore",
        "pay"
      ]
    },
    {
      "description": "Build a sequential UBL 2.1 / EN 16931-style XML invoice and a PDF for a paid order. The same invoice is returned if it already exists. Download URLs require an unguessable token.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\", \"order_id\"], \"properties\": {\"action\": {\"const\": \"generate_invoice\"}, \"order_id\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"invoice\"], \"properties\": {\"invoice\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"generate_invoice\",\"order_id\":\"ORDER_ID\"}",
        "Generate the invoice for the order."
      ],
      "id": "generate_invoice",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Generate invoice",
      "outputModes": [
        "application/json",
        "text/plain",
        "application/xml",
        "application/pdf"
      ],
      "tags": [
        "bookstore",
        "generate_invoice"
      ]
    },
    {
      "description": "Return the order, payment (last4 and brand only), invoice links, and email status.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\", \"order_id\"], \"properties\": {\"action\": {\"const\": \"get_order_status\"}, \"order_id\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"order\"], \"properties\": {\"order\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"get_order_status\",\"order_id\":\"ORDER_ID\"}",
        "What is the status of the order?"
      ],
      "id": "get_order_status",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Get order status",
      "outputModes": [
        "application/json",
        "text/plain",
        "application/xml",
        "application/pdf"
      ],
      "tags": [
        "bookstore",
        "get_order_status"
      ]
    },
    {
      "description": "Send the order confirmation and the invoice to the customer. If neither Resend nor SMTP is configured, the action still succeeds and the status is exactly \"not_sent: email provider not configured\". Pay already attempts this once.\n\nInput JSON schema:\n{\"type\": \"object\", \"required\": [\"action\", \"order_id\"], \"properties\": {\"action\": {\"const\": \"notify_order\"}, \"order_id\": {\"type\": \"string\"}}}\n\nOutput JSON schema:\n{\"type\": \"object\", \"required\": [\"notification\"], \"properties\": {\"notification\": {\"type\": \"object\"}}}\n\nSend this as an A2A DataPart for a deterministic result that does not call a model. A TextPart is handled by the language model, which calls the same tool. Every result also includes state and message.",
      "examples": [
        "{\"action\":\"notify_order\",\"order_id\":\"ORDER_ID\"}",
        "Email the invoice to the customer."
      ],
      "id": "notify_order",
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "name": "Email order",
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "tags": [
        "bookstore",
        "notify_order"
      ]
    }
  ],
  "url": "https://agent.agiq.top",
  "version": "0.2.0"
}