{"audit":{"version":"1.5","generated_at":"2026-10-09T21:10:32.757978+00:00","generated_by":"Agenstry","report_url":"https://agenstry.com/agents/stocksonchain.io","methodology_url":"https://agenstry.com/methodology","verifier_jwks_url":"https://agenstry.com/.well-known/jwks.json","subject":{"domain":"stocksonchain.io","name":"Stocks On Chain","url":"https://stocksonchain.io/.well-known/agent-card.json"}},"identity":{"provider":{"organization":"Gwei, Inc.","url":"https://stocksonchain.io"},"registry_verification":null,"signature":{"signed":false,"signature_valid":null}},"protocol":{"version":"1.0","supports_streaming":false,"supports_push_notifications":false},"operational":{"live_state":"live","live_responds":true,"last_status_code":200,"last_elapsed_ms":105,"last_error":null},"track_record":{"first_seen":"2026-10-09T18:28:13.497253+00:00","last_checked":"2026-10-09T18:28:13.497253+00:00","last_seen_ok":"2026-10-09T18:28:13.497253+00:00","checks_total":1,"checks_ok":1,"uptime_pct":100.0,"uptime_window_days":30,"uptime_probes":1,"archived":false,"archived_reason":null},"conformance":{"score":66,"grade":"C","summary":"C-grade: usable but has clear conformance issues, review the breakdown below.","criteria":[{"key":"valid_card","label":"Valid AgentCard","points":10,"max_points":10,"status":"pass","detail":"Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification)."},{"key":"live_responds","label":"Live JSON-RPC","points":25,"max_points":25,"status":"pass","detail":"Endpoint responds to a negotiated A2A SendMessage probe (answers in ~51 ms)."},{"key":"protocol_version","label":"Protocol version","points":10,"max_points":10,"status":"pass","detail":"Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape)."},{"key":"signature","label":"JWS signature","points":0,"max_points":10,"status":"info","detail":"Card is unsigned (most published agents are)."},{"key":"uptime","label":"Uptime track record","points":0,"max_points":15,"status":"info","detail":"Only 1 probe so far, need ≥5 for an uptime grade."},{"key":"skills","label":"Skill declaration","points":10,"max_points":10,"status":"pass","detail":"Declares 8 skills with structured metadata."},{"key":"verified_identity","label":"Verified Identity","points":5,"max_points":10,"status":"partial","detail":"Provider declared: Gwei, Inc. (https://stocksonchain.io). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit."},{"key":"freshness","label":"Freshness + modern flags","points":4,"max_points":5,"status":"pass","detail":"seen in upstream source within 0d"},{"key":"security","label":"Security declaration","points":2,"max_points":5,"status":"partial","detail":"Declares securityRequirements: [] — deliberately public, no credentials required."}]},"card_read":{"findings":[],"clean":true,"source_url":"https://stocksonchain.io/.well-known/agent-card.json"},"skills":[{"id":"search_stocks","name":"Search tokenized stocks","description":"Find tokenized stocks by ticker or company name. Returns every match with its issuers and chains, alphabetical by ticker. If a ticker is a real stock but has not been tokenized, this reports that too, which is a correct answer rather than an empty result.","tags":["stocks","search","tokenized-equities","registry"],"examples":[],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"get_stock","name":"Get one tokenized stock","description":"Everything known about one stock: every instrument (one per issuer, with the mechanics union describing how it handles corporate actions), every listing under it (chain, contract address, supply, price), and the events recorded against it. Report instruments as the options; listings are addresses. Read mechanics.kind before reaching for any field inside mechanics.","tags":["stocks","listings","issuers","chains","registry"],"examples":[],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"list_issuers","name":"List issuers","description":"Every issuer whose tokens are tracked, in registry order, with the legal wrapper it uses, the chains it issues on, and a link to where that issuer publishes its own rule on who may buy. The rule itself is deliberately not included: it can change without this site noticing, so answer eligibility questions by sending the caller to eligibility.sourceUrl rather than by stating a rule.","tags":["issuers","wrappers","registry"],"examples":[],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"list_chains","name":"List chains","description":"Every chain carrying tokenized stocks, with its explorer, and the matrix of which issuer has listed what where. Registry order, which is not a ranking.","tags":["chains","registry"],"examples":[],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"list_events","name":"List corporate actions","description":"The corporate-action tape: splits, distributions and multiplier changes read from chain state, each with a transaction hash. Newest first by the time the event took effect, which is chronology and not a ranking.","tags":["corporate-actions","dividends","splits","on-chain-events"],"examples":[],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"get_contract","name":"Look up a contract address","description":"What this site holds about one address, in two independent halves. `listings` says what the token IS - the stock, its company, the issuer and the chain - and is present whenever the address is a listing we track. `matches` says what the CODE at the address is: its runtime bytecode hash, the implementation behind it if it is a proxy, and how many other addresses we track run byte-identical code; it is present only where we have read the code. The code half is reproducible: fetch eth_getCode and take its keccak256 and you get the same hash. Either half can be empty and both can be present; an address we hold nothing about returns found: false, which is an answer rather than an error. This never says an address is safe, genuine or correct, and there is no field that could: check it against the issuer before you act on it.","tags":["contracts","addresses","verification"],"examples":[],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"get_manifest","name":"Get the agent tier terms","description":"What this service offers a machine reader: the free keyless endpoints, the bulk dataset and its price if the paid tier is live, and the licence. No human reader is ever charged or asked to connect a wallet.","tags":["metadata","licence","terms"],"examples":[],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"report_gap","name":"Report something this site does not have","description":"Tell us you wanted something and did not get it: a stock we do not track, a chain a stock is not on, a field no endpoint carries, a tool that does not exist, a figure you believe is wrong, or a path that failed. Call this when another tool has just answered with a miss - the answer names the kind to send. THERE IS NO FREE-TEXT FIELD AND THERE WILL NOT BE ONE: a report is an enumerated kind plus a short subject, because the counts are what is useful and prose from an anonymous caller is a prompt-injection surface pointed at the people who read it. Nothing about you is recorded - no address, no header, no identifier - so a report cannot be joined to a caller and there is no reply. The report is counted in aggregate and returned to you with a prefilled link a human can open to track it. Reporting costs nothing and is never required.","tags":["feedback","coverage"],"examples":[],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]}],"provenance":[{"source":"smithery","first_seen":"2026-10-09T18:28:13.497253+00:00"}],"recent_probes":[{"fetched_at":"2026-10-09T18:28:13.497253+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":105,"live_responds":true}],"catalog_attestation":null,"operator_revenue_evidence":{"evidence_class":"operator_submitted","authenticity":{"rung":"no_operator_evidence","rank":0,"why":"No verifiable operator evidence has been submitted for this agent.","thresholds":{"min_independent_payers":3,"min_verified_usd":25.0},"engine_table":"agent_authenticity","merge_rule":"max(existing_rank, rank)"},"metric_metadata":{"provenance":"operator_submitted_evidence","confidence":"attested","coverage":{"numerator":0},"as_of":"2026-10-09T21:10:32.764202+00:00","definition":"Revenue proofs submitted by the verified owner and re-checked by Agenstry against the settlement chain or the operator's own Stripe account. Only independently confirmed proofs are counted."},"counts":{"retained":0,"verified":0,"unverifiable":0},"verified":{"gross_usd":0.0,"transactions":0,"independent_payers":0},"detail_url":"https://agenstry.com/api/agents/stocksonchain.io/evidence","dispute_url":"https://agenstry.com/agents/stocksonchain.io/dispute"},"verification_history":[]}